diff --git a/Help/Server/b_allocRead.help.lhs b/Help/Server/b_allocRead.help.lhs
--- a/Help/Server/b_allocRead.help.lhs
+++ b/Help/Server/b_allocRead.help.lhs
@@ -1,9 +1,9 @@
-    Sound.SC3.Lang.Help.viewServerHelp "/b_allocRead"
+    Sound.SC3.Lang.Help.sc3_scdoc_help_server_command_open False "/b_allocRead"
 
 > import Sound.OSC {- hosc -}
 > import Sound.SC3 {- hsc3 -}
 
-Read a large audio file into a buffer.
+Read an audio file into a buffer.
 
 > f_00 = "/home/rohan/data/audio/xenakis/jonchaies.wav"
 > m_00 = b_allocRead 0 f_00 0 0
@@ -50,3 +50,12 @@
 Free buffer.  Memory is immediately made free.
 
     withSC3 (async (b_free 0))
+
+Small sample buffer
+
+> f_01 = "/home/rohan/data/audio/metal.wav"
+
+    withSC3 (async m_01)
+
+> m_01 :: Message
+> m_01 = b_allocRead 0 f_01 0 0
diff --git a/Help/Server/b_gen.help.lhs b/Help/Server/b_gen.help.lhs
--- a/Help/Server/b_gen.help.lhs
+++ b/Help/Server/b_gen.help.lhs
@@ -1,1 +1,19 @@
     Sound.SC3.Lang.Help.viewServerHelp "/b_gen"
+
+function to generate wavetable buffer using b_gen_cheby
+
+> mk_b a =
+>     let tbl_f = [Normalise,Wavetable,Clear]
+>         msg = [b_alloc 10 512 1,b_gen_cheby 10 tbl_f a]
+>     in withSC3 (mapM_ async msg)
+
+    > mk_b [1,0,1,1,0,1]
+    > mk_b [0.25,0.5,0.25]
+    > mk_b [1,0,1,1,0,1]
+    > mk_b [1,0,1,1,0,1,0.5,0,0.25,0,0.75,1]
+
+plot wavetable (as in-buffer layout, as plain wavetable)
+
+    > import Sound.SC3.Plot {- hsc3-plot -}
+    > withSC3 (plot_buffer1 10)
+    > withSC3 (plot_wavetable1 10)
diff --git a/Help/Server/b_info.help.lhs b/Help/Server/b_info.help.lhs
new file mode 100644
--- /dev/null
+++ b/Help/Server/b_info.help.lhs
@@ -0,0 +1,3 @@
+/b_info is the message returned by scsynth in response to /b_query.
+
+Fields are: buffer-id:int num-frames:int num-channels:int sample-rate:float
diff --git a/Help/Server/b_read.help.lhs b/Help/Server/b_read.help.lhs
--- a/Help/Server/b_read.help.lhs
+++ b/Help/Server/b_read.help.lhs
@@ -1,1 +1,1 @@
-    Sound.SC3.Lang.Help.viewServerHelp "/b_read"
+    Sound.SC3.Lang.Help.sc3_scdoc_help_server_command_open True "/b_read"
diff --git a/Help/UGen/abs.help.lhs b/Help/UGen/abs.help.lhs
deleted file mode 100644
--- a/Help/UGen/abs.help.lhs
+++ /dev/null
@@ -1,3 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = abs (syncSaw AR 100 440 * 0.1)
diff --git a/Help/UGen/absDif.help.lhs b/Help/UGen/absDif.help.lhs
deleted file mode 100644
--- a/Help/UGen/absDif.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Finding the magnitude of the difference of two values is a common operation.
-
-> g_01 =
->     let p = fSinOsc AR 440 0
->         q = fSinOsc AR 2 0 * 0.5
->     in p * 0.2 `absDif` q
diff --git a/Help/UGen/add.help.lhs b/Help/UGen/add.help.lhs
deleted file mode 100644
--- a/Help/UGen/add.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let o = fSinOsc AR 800 0
->         n = pinkNoise 'α' AR
->     in (o + n) * 0.1
-
-DC offset.
-
-> g_02 = fSinOsc AR 440 0 * 0.1 + 0.5
-
-Optimises identity
-
-> g_03 = (sinOsc AR 440 0 + 0) * 0.1
-
-> g_04 = (0 + sinOsc AR 440 0) * 0.1
diff --git a/Help/UGen/allpassC.help.lhs b/Help/UGen/allpassC.help.lhs
deleted file mode 100644
--- a/Help/UGen/allpassC.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See allPassN
diff --git a/Help/UGen/allpassL.help.lhs b/Help/UGen/allpassL.help.lhs
deleted file mode 100644
--- a/Help/UGen/allpassL.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See allPassN
diff --git a/Help/UGen/allpassN.help.lhs b/Help/UGen/allpassN.help.lhs
deleted file mode 100644
--- a/Help/UGen/allpassN.help.lhs
+++ /dev/null
@@ -1,50 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Since the allpass delay has no audible effect as a resonator on steady
-state sound ...
-
-> g_01 =
->     let dly = xLine KR 0.0001 0.01 20 RemoveSynth
->         n = whiteNoise 'α' AR
->     in allpassC (n * 0.1) 0.01 dly 0.2
-
-...these examples add the input to the effected sound so that you
-can hear the effect of the phase comb.
-
-> g_02 =
->     let n = whiteNoise 'β' AR
->         dly = xLine KR 0.0001 0.01 20 RemoveSynth
->     in (n + allpassN (n * 0.1) 0.01 dly 0.2) * 0.1
-
-Linear variant
-
-> g_03 =
->     let n = whiteNoise 'γ' AR
->         dly = xLine KR 0.0001 0.01 20 RemoveSynth
->     in (n + allpassL (n * 0.1) 0.01 dly 0.2) * 0.1
-
-Cubic variant
-
-> g_04 =
->     let n = whiteNoise 'δ' AR
->         dly = xLine KR 0.0001 0.01 20 RemoveSynth
->     in (n + allpassC (n * 0.1) 0.01 dly 0.2) * 0.1
-
-Used as an echo - doesn't really sound different than Comb, but it
-outputs the input signal immediately (inverted) and the echoes are
-lower in amplitude.
-
-> g_05 =
->     let n = whiteNoise 'ε' AR
->         d = dust 'ζ' AR 1
->         src = decay (d * 0.5) 0.2 * n
->     in allpassN src 0.2 0.2 3
-
-Phasing
-
-> g_06 =
->   let i = soundIn (mce2 0 1) -- two channels of input signal
->       f = mouseX KR 0.1 1.0 Linear 0.2 -- phaser freq
->       e = allpassN i 0.02 (sinOsc KR f 0 * 0.01 + 0.01) 1 -- max delay of 20msec
->   in i + e -- sum phase-shifted signal to original signal
-
diff --git a/Help/UGen/amClip.help.lhs b/Help/UGen/amClip.help.lhs
deleted file mode 100644
--- a/Help/UGen/amClip.help.lhs
+++ /dev/null
@@ -1,3 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = amClip (whiteNoise 'α' AR) (fSinOsc KR 1 0 * 0.2)
diff --git a/Help/UGen/ampComp.help.lhs b/Help/UGen/ampComp.help.lhs
deleted file mode 100644
--- a/Help/UGen/ampComp.help.lhs
+++ /dev/null
@@ -1,36 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-mouse X axis frequency control
-
-> x_freq = mouseX KR 300 1500 Exponential 0.2
-
-> ampComp' :: Bool -> Rate -> UGen -> UGen -> UGen -> UGen
-> ampComp' use_comp r fr rt ex = if use_comp then ampComp r fr rt ex else 1
-
-> f_01 use_comp = sinOsc AR x_freq 0 * 0.1 * ampComp' use_comp KR x_freq 300 0.3333
-
-without amplitude compensation
-
-> g_01 = f_01 False
-
-with amplitude compensation
-
-> g_02 = f_01 True
-
-modified exponent
-
-> g_03 = pulse AR x_freq 0.5 * 0.1 * ampComp KR x_freq 300 1.3
-
-in frequency modulation
-
-> f_02 use_comp =
->     let freq = x_freq * sinOsc AR (mouseY KR 3 200 Exponential 0.2) 0 * 0.5 + 1
->     in sinOsc AR freq 0 * 0.1 * ampComp' use_comp KR freq 300 0.3333
-
-with amplitude compensation
-
-> g_04 = f_02 True
-
-without amplitude compensation
-
-> g_05 = f_02 False
diff --git a/Help/UGen/ampDb.help.lhs b/Help/UGen/ampDb.help.lhs
deleted file mode 100644
--- a/Help/UGen/ampDb.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-    > let amp = map (2 **) [0 .. 15]
-    > let db = [0,-6 .. -90]
-    > map (round . ampDb . (/) 1) amp == db
-    > map (round . amp_to_db . (/) 1) amp == db
-    > zip amp db
-
-    > db_to_amp (-3) == 0.7079457843841379
-    > amp_to_db 0.7079457843841379 == -3
diff --git a/Help/UGen/amplitude.help.lhs b/Help/UGen/amplitude.help.lhs
deleted file mode 100644
--- a/Help/UGen/amplitude.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let s = soundIn 0
->         a = amplitude KR s 0.01 0.01
->     in pulse AR 90 0.3 * a
-
-> g_02 =
->     let s = soundIn 0
->         f = amplitude KR s 0.5 0.5 * 1200 + 400
->     in sinOsc AR f 0 * 0.1
-
-> g_03 =
->     let s = soundIn 0
->         a = amplitude AR s 0.5 0.05
->     in s * a
diff --git a/Help/UGen/atan2.help.lhs b/Help/UGen/atan2.help.lhs
deleted file mode 100644
--- a/Help/UGen/atan2.help.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Add a pan to the hypot doppler examples by using atan2 to find the
-azimuth, or direction angle, of the sound source.  Assume speakers
-at +/- 45 degrees and clip the direction to between those.
-
-> g_01 =
->     let x = 10
->         y = lfSaw KR (1 / 6) 0 * 100
->         d = hypot x y
->         a = 40 / (squared d)
->         s = rlpf (fSinOsc AR 200 0 * lfPulse AR 31.3 0 0.4) 400 0.3
->         z = atan2E y x
->         l = clip2 (z / (pi / 2)) 1
->     in pan2 (delayL s (110 / 344) (d / 344)) l a
diff --git a/Help/UGen/atari2600.help.lhs b/Help/UGen/atari2600.help.lhs
deleted file mode 100644
--- a/Help/UGen/atari2600.help.lhs
+++ /dev/null
@@ -1,78 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.HW.External.F0 as X {- hsc3 -}
-
-> import Sound.SC3.Lang.Pattern {- hsc3-lang -}
-
-> gr_00 = X.atari2600 1 2 3 4 5 5 1
-
-> gr_01 = X.atari2600 2 3 10 10 5 5 1
-
-> gr_02 =
->     let x = mouseX KR 0 15 Linear 0.1
->         y = mouseY KR 0 15 Linear 0.1
->     in X.atari2600 x y 10 10 5 5 1
-
-> gr_03 =
->     let x = mouseX KR 0 31 Linear 0.1
->         y = mouseY KR 0 31 Linear 0.1
->     in X.atari2600 2 3 x y 5 5 1
-
-> gr_04 =
->     let x = mouseX KR 0 15 Linear 0.1
->         y = mouseY KR 0 15 Linear 0.1
->     in X.atari2600 2 3 10 10 x y 1
-
-> gr_05 =
->     let x = mouseX KR 0 15 Linear 0.1
->         o1 = sinOsc KR 0.35 0 * 7.5 + 7.5
->         y = mouseY KR 0 31 Linear 0.1
->         o2 = sinOsc KR 0.3 0 * 5.5 + 5.5
->     in X.atari2600 x o1 10 y o2 5 1
-
-> ati_syn =
->     let gate' = control KR "gate" 1
->         tone0 = control KR "tone0" 5
->         tone1 = control KR "tone1" 8
->         freq0 = control KR "freq0" 10
->         freq1 = control KR "freq1" 20
->         rate = control KR "rate" 1
->         amp = control KR "amp" 1
->         pan = control KR "pan" 0
->         e = envASR 0.01 amp 0.05 (EnvNum (-4))
->         eg = envGen KR gate' 1 0 1 RemoveSynth e
->         z = X.atari2600 tone0 tone1 freq0 freq1 15 15 rate
->         o = out 0 (pan2 (z * eg) pan 1)
->     in synthdef "atari2600" o
-
-> p_01 =
->     [(K_instr,psynth ati_syn)
->     ,(K_dur,0.125)
->     ,(K_amp,0.5)
->     ,(K_param "tone0",pseq [pn 3 64,pn 2 128,pn 10 8] inf)
->     ,(K_param "tone1",pseqn [32,12] [8,pwhite 'α' 0 15 inf] inf)
->     ,(K_param "freq0",pseqn [17,4,3] [10,prand 'β' [1,2,3] inf,10] inf)
->     ,(K_param "freq1",pseq1 [10,3,pwrand 'γ' [20,1] [0.6,0.4] inf] inf)]
-
-    paudition (pbind p_01)
-
-> p_02 =
->     [(K_instr,psynth ati_syn)
->     ,(K_dur,pseq [0.25,0.25,0.25,0.45] inf)
->     ,(K_amp,0.5)
->     ,(K_param "tone0",pseq [pseq [2,5] 32,pseq [3,5] 32] inf)
->     ,(K_param "tone1",14)
->     ,(K_param "freq0",pseq [pbrown 'α' 28 31 1 32,pbrown 'β' 23 26 3 32] inf)
->     ,(K_param "freq1",pseq [pn 10 16,pn 11 16] inf)]
-
-    paudition (pbind p_02)
-
-> p_03 =
->     [(K_instr,psynth ati_syn)
->     ,(K_dur,pbrown 'α' 0.1 0.15 0.1 inf)
->     ,(K_amp,0.5)
->     ,(K_param "tone0",1)
->     ,(K_param "tone1",2)
->     ,(K_param "freq0",pseqn [2,1] [24,pwrand 'β' [20,23] [0.6,0.4] inf] inf)
->     ,(K_param "freq1",pseqn [1,1,1] [1,3,pwrand 'γ' [2,1] [0.6,0.4] inf] inf)]
-
-    paudition (pbind p_03)
diff --git a/Help/UGen/audioMSG.help.lhs b/Help/UGen/audioMSG.help.lhs
deleted file mode 100644
--- a/Help/UGen/audioMSG.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 = X.audioMSG AR (sinOsc AR 220 0 * 0.1) (mouseX KR 0 (2 * pi) Linear 0.2)
-
-> g_02 = X.audioMSG AR (soundIn 0) (mouseX KR 0 (2 * pi) Linear 0.2)
-
diff --git a/Help/UGen/ay.help.lhs b/Help/UGen/ay.help.lhs
deleted file mode 100644
--- a/Help/UGen/ay.help.lhs
+++ /dev/null
@@ -1,34 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-default parameters
-
-> g_01 = X.ay 1777 1666 1555 1 7 15 15 15 4 1 0
-
-> g_02 =
->     let tonea = mouseY KR 10 3900 Exponential 0.2
->         toneb = mouseX KR 10 3900 Exponential 0.2
->         ctl = 3
->         vola = 14
->         volb = 14
->         volc = 0
->         s = X.ay tonea toneb 1555 1 ctl vola volb volc 4 1 0
->     in pan2 s 0 0.25
-
-> g_03 =
->     let rate = mouseX KR 0.1 10 Linear 0.2
->         rng l r i = linLin i (-1) 1 l r
->         mk_ctl e l r = rng l r (lfdNoise3 e KR rate)
->         mk_ctl_0 e l r = rng l r (lfdNoise0 e KR rate)
->         tonea = mk_ctl 'α' 10 3900
->         toneb = mk_ctl 'β' 10 3900
->         tonec = mk_ctl 'γ' 10 3900
->         n = mk_ctl 'δ' 0 31
->         ctl = mk_ctl_0 'ε' 0 31
->         vola = mk_ctl 'ζ' 0 15
->         volb = mk_ctl 'η' 0 15
->         volc = mk_ctl 'θ' 0 15
->         efreq = mk_ctl 'ι' 0 4095
->         estyle = mk_ctl 'κ' 0 15
->         s = X.ay tonea toneb tonec n ctl vola volb volc efreq estyle 0
->     in pan2 s 0 0.5
diff --git a/Help/UGen/bAllpass.help.lhs b/Help/UGen/bAllpass.help.lhs
deleted file mode 100644
--- a/Help/UGen/bAllpass.help.lhs
+++ /dev/null
@@ -1,24 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}
-
-thoughpass
-
-> g_01 =
->     let i = soundIn (mce2 0 1)
->         f = mouseX KR 10 18000 Exponential 0.2
->     in bAllPass i f 0.8
-
-bandpass
-
-> g_02 =
->     let i = soundIn (mce2 0 1) * 0.5
->         f = mouseX KR 100 18000 Exponential 0.2
->     in bAllPass i f 0.8 + negate i
-
-calculate coefficients and use sos
-
-> g_03 =
->     let i = soundIn (mce2 0 1) * 0.5
->         f = mouseX KR 100 18000 Exponential 0.2
->         (a0, a1, a2, b1, b2) = bAllPassCoef sampleRate f 0.8
->     in sos i a0 a1 a2 b1 b2 + negate i
diff --git a/Help/UGen/bBandPass.help.lhs b/Help/UGen/bBandPass.help.lhs
deleted file mode 100644
--- a/Help/UGen/bBandPass.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}
-
-> g_01 =
->     let i = soundIn 0
->         f = mouseX KR 20 20000 Exponential 0.2
->         bw = mouseY KR 0 10 Linear 0.2
->     in bBandPass i f bw
-
-calculate coefficients and use sos
-
-> g_02 =
->     let i = soundIn 0
->         f = mouseX KR 20 20000 Exponential 0.2
->         bw = mouseY KR 0 10 Linear 0.2
->         (a0, a1, a2, b1, b2) = bBandPassCoef sampleRate f bw
->     in sos i a0 a1 a2 b1 b2
diff --git a/Help/UGen/bBandStop.help.lhs b/Help/UGen/bBandStop.help.lhs
deleted file mode 100644
--- a/Help/UGen/bBandStop.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}
-
-> g_01 =
->     let i = soundIn (mce2 0 1)
->         f = mouseX KR 20 20000 Exponential 0.2
->         bw = mouseY KR 0 10 Linear 0.2
->     in bBandStop i f bw
-
-> g_02 =
->     let i = sinOsc AR 1000 (mce2 0 0)
->         f = mouseX KR 800 1200 Exponential 0.2
->         bw = mouseY KR 0 10 Linear 0.2
->     in bBandStop i f bw
-
-calculate coefficients and use sos
-
-> g_03 =
->     let i = soundIn (mce2 0 1)
->         f = mouseX KR 800 1200 Exponential 0.2
->         bw = mouseY KR 0 10 Linear 0.2
->         (a0, a1, a2, b1, b2) = bBandStopCoef sampleRate f bw
->     in sos i a0 a1 a2 b1 b2
diff --git a/Help/UGen/bHiPass.help.lhs b/Help/UGen/bHiPass.help.lhs
deleted file mode 100644
--- a/Help/UGen/bHiPass.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}
-
-> g_01 =
->     let i = whiteNoise 'α' AR {- soundIn (mce2 0 1) -}
->         f = mouseX KR 10 20000 Exponential 0.2
->         rq = mouseY KR 0 1 Linear 0.2
->     in bHiPass i f rq
-
-calculate coefficients and use sos (see also bHiPass4)
-
-> g_02 =
->     let i = whiteNoise 'α' AR
->         f = mouseX KR 10 20000 Exponential 0.2
->         rq = mouseY KR 0 1 Linear 0.2
->         (a0, a1, a2, b1, b2) = bHiPassCoef sampleRate f rq
->     in sos i a0 a1 a2 b1 b2
diff --git a/Help/UGen/bHiPass4.help.lhs b/Help/UGen/bHiPass4.help.lhs
deleted file mode 100644
--- a/Help/UGen/bHiPass4.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let i = mix (saw AR (mce [0.99, 1, 1.01] * 440) * 0.3)
->         f = mouseX KR 20 20000 Exponential 0.2
->         rq = mouseY KR 0.1 1 Linear 0.2
->     in bHiPass4 i f rq
diff --git a/Help/UGen/bHiShelf.help.lhs b/Help/UGen/bHiShelf.help.lhs
deleted file mode 100644
--- a/Help/UGen/bHiShelf.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}
-
-> g_01 =
->     let i = soundIn 0
->         f = mouseX KR 2200 18000 Exponential 0.2
->         db = mouseY KR 18 (-18) Linear 0.2
->     in bHiShelf i f 1 db
-
-> g_02 =
->     let i = soundIn 0
->         f = mouseX KR 2200 18000 Exponential 0.2
->         rs = mouseY KR 0.1 1 Linear 0.2
->     in bHiShelf i f rs 6
-
-calculate coefficients and use sos
-
-> g_03 =
->     let i = soundIn 0
->         f = mouseX KR 2200 18000 Exponential 0.2
->         rs = mouseY KR 0.1 1 Linear 0.2
->         (a0, a1, a2, b1, b2) = bHiShelfCoef sampleRate f rs 6
->     in sos i a0 a1 a2 b1 b2
diff --git a/Help/UGen/bLowPass.help.lhs b/Help/UGen/bLowPass.help.lhs
deleted file mode 100644
--- a/Help/UGen/bLowPass.help.lhs
+++ /dev/null
@@ -1,26 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}
-
-> g_01 =
->     let i = soundIn (mce2 0 1)
->         f = mouseX KR 10 20000 Exponential 0.2
->         rq = mouseY KR 0 1 Linear 0.2
->     in bLowPass i f rq
-
-> g_02 =
->     let i = mix (saw AR (mce [0.99, 1, 1.01] * 440) * 0.3)
->         f = mouseX KR 100 20000 Exponential 0.2
->         rq = mouseY KR 0.1 1 Linear 0.2
->     in bLowPass i f rq
-
-calculate coefficients and use sos (see also bLowPass4)
-
-> g_03 =
->     let i = mix (saw AR (mce [0.99, 1, 1.01] * 440) * 0.3)
->         f = mouseX KR 100 20000 Exponential 0.2
->         rq = mouseY KR 0.1 1 Linear 0.2
->         (a0, a1, a2, b1, b2) = bLowPassCoef sampleRate f rq
->     in sos i a0 a1 a2 b1 b2
-
-> g_04 = bLowPass (whiteNoise 'α' AR) (xLine KR 24000 20 10 DoNothing) 1
-> g_05 = bLowPass (whiteNoise 'α' AR) 1200 (xLine KR 0.5 100 10 DoNothing)
diff --git a/Help/UGen/bLowPass4.help.lhs b/Help/UGen/bLowPass4.help.lhs
deleted file mode 100644
--- a/Help/UGen/bLowPass4.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let i = mix (saw AR (mce [0.99, 1, 1.01] * 440) * 0.3)
->         f = mouseX KR 100 20000 Exponential 0.2
->         rq = mouseY KR 0.1 1 Linear 0.2
->     in bLowPass4 i f rq
diff --git a/Help/UGen/bLowShelf.help.lhs b/Help/UGen/bLowShelf.help.lhs
deleted file mode 100644
--- a/Help/UGen/bLowShelf.help.lhs
+++ /dev/null
@@ -1,26 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}
-
-> g_01 =
->     let i = soundIn (mce2 0 1)
->         freq = mouseX KR 40 6000 Exponential 0.2
->         rs = 1
->         db = mouseY KR 24 (-24) Linear 0.2
->     in bLowShelf i freq rs db
-
-> g_02 =
->     let i = soundIn (mce2 0 1)
->         freq = mouseX KR 20 6000 Exponential 0.2
->         rs = mouseY KR 0.1 1 Linear 0.2
->         db = 6
->     in bLowShelf i freq rs db
-
-calculate coefficients and use sos
-
-> g_03 =
->     let i = soundIn (mce2 0 1)
->         freq = mouseX KR 20 6000 Exponential 0.2
->         rs = mouseY KR 0.1 1 Linear 0.2
->         db = 6
->         (a0, a1, a2, b1, b2) = bLowShelfCoef sampleRate freq rs db
->     in sos i a0 a1 a2 b1 b2
diff --git a/Help/UGen/bMoog.help.lhs b/Help/UGen/bMoog.help.lhs
deleted file mode 100644
--- a/Help/UGen/bMoog.help.lhs
+++ /dev/null
@@ -1,18 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> f_01 md =
->   let dup x = mce2 x x
->       x = mouseX KR 20 12000 Exponential 0.2
->       o = dup (lfSaw AR (mce2 (x * 0.99) (x * 1.01)) 0 * 0.1)
->       cf = sinOsc KR (sinOsc KR 0.1 0) (1.5 * pi) * 1550 + 1800
->       y = mouseY KR 1 0 Linear 0.2
->       sig = X.bMoog o cf y md 0.95
->   in (combN sig 0.5 (mce2 0.4 0.35) 2 * 0.4) + (sig * 0.5)
-
-modes are: 0 = lowpass, 1 = highpass, 2 = bandpass
-
-> g_01 = f_01 0
-> g_02 = f_01 1
-> g_03 = f_01 2
-> g_04 = f_01 (lfSaw KR 1 0 * 3)
diff --git a/Help/UGen/bPeakEQ.help.lhs b/Help/UGen/bPeakEQ.help.lhs
deleted file mode 100644
--- a/Help/UGen/bPeakEQ.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.Common.Math.Filter.BEQ {- hsc3 -}
-
-> g_01 =
->     let i = soundIn 0
->         freq = mouseX KR 2200 18000 Exponential 0.2
->         db = mouseY KR 12 (-12) Linear 0.2
->     in bPeakEQ i freq 0.8 db
-
-> g_02 =
->     let i = soundIn 0
->         freq = mouseX KR 2200 18000 Exponential 0.2
->         rq = mouseY KR 10 0.4 Linear 0.2
->     in bPeakEQ i freq rq 6
-
-calculate coefficients and use sos (see also bLowPass4)
-
-> g_03 =
->     let i = soundIn 0
->         freq = mouseX KR 2200 18000 Exponential 0.2
->         rq = mouseY KR 10 0.4 Linear 0.2
->         (a0, a1, a2, b1, b2) = bPeakEQCoef sampleRate freq rq 6
->     in sos i a0 a1 a2 b1 b2
diff --git a/Help/UGen/balance2.help.lhs b/Help/UGen/balance2.help.lhs
deleted file mode 100644
--- a/Help/UGen/balance2.help.lhs
+++ /dev/null
@@ -1,47 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-{Balance2.ar(LFSaw.ar(44),Pulse.ar(33),FSinOsc.kr(0.5),0.1)}.play
-
-> g_01 =
->     let l = lfSaw AR 44 0
->         r = pulse AR 33 0.5
->         p = fSinOsc KR 0.5 0
->     in balance2 l r p 0.1
-
-{var s=SinOsc.ar([440,550]);Balance2.ar(s[0],s[1],LFNoise0.kr(4),0.3)}.play
-
-> g_02 =
->     let [s0,s1] = mceChannels (sinOsc AR (mce2 440 550) 0)
->         n = lfNoise0 'α' KR 4
->     in balance2 s0 s1 n 0.3
-
-{var s=SinOsc.ar(440);Out.ar(0,0.2*Balance2.ar(s,s,SinOsc.kr(0.2)))}.play
-
-> g_03 =
->     let s = sinOsc AR 440 0
->         p = sinOsc KR 0.2 0
->     in balance2 s s p 1 * 0.2
-
-{var s=SinOsc.ar(440);Out.ar(0,Balance2.ar(s,s,SinOsc.kr(0.2),0.2))}.play
-
-> g_04 =
->     let s = sinOsc AR 440 0
->         p = sinOsc KR 0.2 0
->     in balance2 s s p 0.2
-
-    > withSC3 (send (n_trace [-1]))
-
-{var s=SinOsc.ar(440);Out.ar(0,Balance2.ar(s,s,MouseX.kr(-1,1),0.2))}.play
-
-> g_05 =
->     let s0 = sinOsc AR 440 0
->         s1 = sinOsc AR 550 0
->         x = mouseX KR (-1) 1 Linear 0.2
->     in balance2 s0 s1 x 0.2
-
-> g_06 =
->     let s = soundIn 0
->         l = lpf s 500
->         h = s - l
->         n = lfNoise0 'α' KR 4
->     in balance2 l h n 0.3
diff --git a/Help/UGen/beatTrack.help.lhs b/Help/UGen/beatTrack.help.lhs
deleted file mode 100644
--- a/Help/UGen/beatTrack.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-    > withSC3 (async (b_alloc 10 1024 1))
-
-> g_01 =
->     let i = soundIn 0
->         x = mouseX KR (-1) 1 Linear 0.2
->         [b, h, q, t] = mceChannels (beatTrack KR (fft' 10 i) x)
->         f = mce [440, 660, 880]
->         a = mce [0.4, 0.2, 0.1]
->         s = mix (sinOsc AR f 0 * a * decay (mce [b, h, q]) 0.05)
->     in i + s
-
-
diff --git a/Help/UGen/blip.help.lhs b/Help/UGen/blip.help.lhs
deleted file mode 100644
--- a/Help/UGen/blip.help.lhs
+++ /dev/null
@@ -1,29 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = blip AR 440 200 * 0.1
-
-Modulate frequency
-
-> g_02 = let f = xLine KR 20000 200 6 RemoveSynth in blip AR f 100 * 0.1
-
-Modulate number of harmonics.
-
-> g_03 = let nh = line KR 1 100 20 RemoveSynth in blip AR 200 nh * 0.2
-
-Self-modulation at control rate.
-
-> g_04 =
->     let fr = blip KR 0.25 3 * 300 + 500
->         nh = blip KR 0.15 2 * 20 + 21
->     in blip AR fr nh * 0.2
-
-Drawings
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plot_ugen1 0.1 (blip AR 1000 20)
-
-    import Sound.SC3.Plot.FFT {- hsc3-plot -}
-    plot_ugen_fft1 0.1 (blip AR 1000 20)
-
-![](sw/hsc3/Help/SVG/blip.0.svg)
-![](sw/hsc3/Help/SVG/blip.1.svg)
diff --git a/Help/UGen/blitB3.help.lhs b/Help/UGen/blitB3.help.lhs
deleted file mode 100644
--- a/Help/UGen/blitB3.help.lhs
+++ /dev/null
@@ -1,21 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 = X.blitB3 AR (xLine KR 10000 20 10 DoNothing) * 0.2
-
-spot the aliasing
-
-> g_02 = impulse AR (xLine KR 10000 20 10 DoNothing) 0 * 0.2
-
-sawtooth
-
-> g_03 =
->   let x = mouseX KR 20 1000 Exponential 0.2
->   in leakDC (integrator (X.blitB3 AR x * 0.2) 0.99) 0.995
-
-sawtooth; super-saw, can integrate mix
-leaks dealt with one by one so don't accumulate
-
-> g_04 =
->   let x = mouseX KR 1 4 Linear 0.2
->   in mix (leakDC (integrator (X.blitB3 AR (x * mce [220,221,223,224]) * 0.125) 0.99) 0.995)
diff --git a/Help/UGen/blitB3Saw.help.lhs b/Help/UGen/blitB3Saw.help.lhs
deleted file mode 100644
--- a/Help/UGen/blitB3Saw.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->     let f = xLine KR 1000 20 10 DoNothing
->     in X.blitB3Saw AR f 0.99 * 0.1
-
-aliasing suddenly appears for very high frequencies
-
-> g_02 =
->     let f = mouseX KR 10 10000 Exponential 0.2
->         c = mouseY KR 0.01 0.99 Linear 0.2
->     in X.blitB3Saw AR f c * 0.1
-
-comparison
-
-> g_03 = mce2 (saw AR 20) (X.blitB3Saw AR 20 0.99) * 0.1
diff --git a/Help/UGen/blitB3Square.help.lhs b/Help/UGen/blitB3Square.help.lhs
deleted file mode 100644
--- a/Help/UGen/blitB3Square.help.lhs
+++ /dev/null
@@ -1,28 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_00 =
->   let x = mouseX KR 20 400 Exponential 0.2
->   in X.blitB3Square AR x 0.99 * 0.1
-
-> g_01 =
->     let f = xLine KR 1000 20 10 DoNothing
->     in X.blitB3Square AR f 0.99 * 0.1
-
-aliasing suddenly appears for very high frequencies
-
-> g_02 =
->     let f = mouseX KR 20 10000 Exponential 0.2
->         c = mouseY KR 0.001 0.999 Linear 0.2
->     in X.blitB3Square AR f c * 0.1
-
-difference in CPU usage (excessive wire use,-w 1024)
-
-> f_03 sqr_osc =
->     let f z = midiCPS (range 36 72 (lfNoise0 z KR (rand z 2 3)))
->         l z = rand z (-1) 1
->         o z = pan2 (sqr_osc AR (f z) * 0.1) (l z) 0.1
->     in sum (map o [0::Int .. 99])
-
-> g_03 = f_03 (\rt f -> X.blitB3Square rt f 0.99)
-> g_04 = f_03 (\rt f -> pulse rt f 0.5)
diff --git a/Help/UGen/blitB3Tri.help.lhs b/Help/UGen/blitB3Tri.help.lhs
deleted file mode 100644
--- a/Help/UGen/blitB3Tri.help.lhs
+++ /dev/null
@@ -1,19 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 = X.blitB3Tri AR (xLine KR 1000 20 10 DoNothing) 0.99 0.99 * 0.1
-
-unfortunately, aliasing returns at higher frequencies
-(over 5000Hz or so) with a vengence (very beautiful in point scope)
-
-> g_02 =
->   let x = mouseX KR 20 8000 Exponential 0.2
->       y = mouseY KR 0.001 0.99 Linear 0.2
->   in X.blitB3Tri AR x 0.99 y * 0.1
-
-more efficient, some aliasing from 3000, but not so scary over 5000
-Duller sound (less high harmonics included for lower fundamentals)
-
-> g_03 =
->   let x = mouseX KR 20 8000 Exponential 0.2
->   in lfTri AR x 0 * 0.1
diff --git a/Help/UGen/blockSize.help.lhs b/Help/UGen/blockSize.help.lhs
deleted file mode 100644
--- a/Help/UGen/blockSize.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-default block size is 64 samples
-
-> g_01 = sinOsc AR (mce2 (blockSize * 3) (64 * 3 + 1)) 0 * 0.1
-
-> g_02 = sinOsc AR (mce2 (blockSize * 3) ((controlDur * sampleRate * 3) + 1)) 0 * 0.1
diff --git a/Help/UGen/bpf.help.lhs b/Help/UGen/bpf.help.lhs
deleted file mode 100644
--- a/Help/UGen/bpf.help.lhs
+++ /dev/null
@@ -1,24 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let f = fSinOsc KR (xLine KR 0.7 300 20 RemoveSynth) 0 * 3600 + 4000
->     in bpf (saw AR 200 * 0.5) f 0.3
-
-> g_02 =
->     let x = mouseX KR 100 10000 Exponential 0.2
->     in bpf (saw AR 200 * 0.5) x 0.3
-
-> g_03 =
->     let n = whiteNoise 'α' AR
->         x = mouseX KR 220 440 Exponential 0.1
->         y = mouseY KR 0.01 0.2 Linear 0.1
->     in bpf n (mce [x, 550 - x]) y
-
-    import Sound.SC3.Plot.FFT {- hsc3-plot -}
-    plot_ugen_fft1 0.05 (bpf (whiteNoise 'α' AR) 440 0.01)
-
-BPF on control signals:
-
-> g_04 =
->     let vib = bpf (pinkNoise 'α' KR) (mouseX KR 1 100 Exponential 0.2) 0.3 * 10
->     in sinOsc AR (vib * 200 + 600) 0 * 0.1
diff --git a/Help/UGen/bpz2.help.lhs b/Help/UGen/bpz2.help.lhs
deleted file mode 100644
--- a/Help/UGen/bpz2.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-   Sound.SC3.UGen.Help.viewSC3Help "BPZ2"
-   Sound.SC3.UGen.DB.ugenSummary "BPZ2"
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = whiteNoise 'α' AR
->     in bpz2 (n * 0.25)
diff --git a/Help/UGen/brf.help.lhs b/Help/UGen/brf.help.lhs
deleted file mode 100644
--- a/Help/UGen/brf.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let i = saw AR 200 * 0.1
->         freq = fSinOsc KR (xLine KR 0.7 300 20 RemoveSynth) 0 * 3800 + 4000
->         rq = 0.3
->     in brf i freq rq
diff --git a/Help/UGen/brownNoise.help.lhs b/Help/UGen/brownNoise.help.lhs
deleted file mode 100644
--- a/Help/UGen/brownNoise.help.lhs
+++ /dev/null
@@ -1,20 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = brownNoise 'α' AR * 0.1
-
-KR rate noise as frequency control
-
-> g_02 =
->     let n = brownNoise 'α' KR
->     in sinOsc AR (linExp n (-1) 1 64 9600) 0 * 0.1
-
-Drawing
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plot_ugen1 0.1 (brownNoise 'γ' AR)
-
-    import Sound.SC3.Plot.FFT {- hsc3-plot -}
-    plot_ugen_fft1 0.1 (brownNoise 'γ' AR)
-
-![](sw/hsc3/Help/SVG/brownNoise.0.svg)
-![](sw/hsc3/Help/SVG/brownNoise.1.svg)
diff --git a/Help/UGen/bufAllpassC.help.lhs b/Help/UGen/bufAllpassC.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufAllpassC.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Allocate buffer
-
-    > withSC3 (async (b_alloc 0 44100 1))
-
-Filtered decaying noise bursts
-
-> g_01 =
->     let d = dust 'α' AR 1
->         n = whiteNoise 'β' AR
->         x = decay d 0.2 * n * 0.25
->     in bufAllpassC 0 x 0.25 6
diff --git a/Help/UGen/bufAllpassL.help.lhs b/Help/UGen/bufAllpassL.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufAllpassL.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See bufAllpassC
diff --git a/Help/UGen/bufAllpassN.help.lhs b/Help/UGen/bufAllpassN.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufAllpassN.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See bufAllpassC
diff --git a/Help/UGen/bufChannels.help.lhs b/Help/UGen/bufChannels.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufChannels.help.lhs
+++ /dev/null
diff --git a/Help/UGen/bufCombC.help.lhs b/Help/UGen/bufCombC.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufCombC.help.lhs
+++ /dev/null
@@ -1,29 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Allocate buffer zero (required for examples below)
-
-    > withSC3 (async (b_alloc 0 44100 1))
-
-Comb filter as resonator. The resonant fundamental is equal to
-reciprocal of the delay time.
-
-> g_01 =
->     let n = whiteNoise 'α' AR
->         dt = xLine KR 0.0001 0.01 20 RemoveSynth
->     in bufCombC 0 (n * 0.1) dt 0.2
-
-With negative feedback
-
-> g_02 =
->     let n = whiteNoise 'α' AR
->         dt = xLine KR 0.0001 0.01 20 RemoveSynth
->     in bufCombC 0 (n * 0.1) dt (-0.2)
-
-Used as an echo (filtered decaying noise bursts)
-
-> g_03 =
->     let d = dust 'α' AR 1
->         n = whiteNoise 'β' AR
->         i = decay (d * 0.5) 0.2 * n
->     in bufCombC 0 i 0.2 3
-
diff --git a/Help/UGen/bufCombL.help.lhs b/Help/UGen/bufCombL.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufCombL.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See bufCombC
diff --git a/Help/UGen/bufCombN.help.lhs b/Help/UGen/bufCombN.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufCombN.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See bufCombC
diff --git a/Help/UGen/bufDelayC.help.lhs b/Help/UGen/bufDelayC.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufDelayC.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Allocate buffer zero (required for examples below)
-
-    > withSC3 (async (b_alloc 0 44100 1))
-
-Dust randomly triggers Decay to create an exponential decay envelope
-for the WhiteNoise input source.  The input is mixed with the delay.
-
-> g_01 =
->     let t = dust 'α' AR 1
->         n = whiteNoise 'β' AR
->         d = decay t 0.5 * n * 0.3
->     in bufDelayC 0 d 0.2 + d
-
-Mouse control for delay time
-
-> g_02 =
->     let t = dust 'α' AR 1
->         n = whiteNoise 'β' AR
->         d = decay t 0.3 * n
->         x = mouseX KR 0.0 0.2 Linear 0.1
->     in d + bufDelayC 0 d x
diff --git a/Help/UGen/bufDelayL.help.lhs b/Help/UGen/bufDelayL.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufDelayL.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See bufDelayC
diff --git a/Help/UGen/bufDelayN.help.lhs b/Help/UGen/bufDelayN.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufDelayN.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See bufDelayC
diff --git a/Help/UGen/bufDur.help.lhs b/Help/UGen/bufDur.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufDur.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Load sound file to buffer zero (required for examples)
-
-> fn_01 = "/home/rohan/data/audio/pf-c5.aif"
-
-> m_01 = b_allocRead 0 fn_01 0 0
-
-    > withSC3 (async m_01)
-
-Read without loop, trigger reset based on buffer duration
-
-> g_01 =
->     let t = impulse AR (recip (bufDur KR 0)) 0
->         p = sweep t (bufSampleRate KR 0)
->     in bufRd 1 AR 0 p NoLoop LinearInterpolation
diff --git a/Help/UGen/bufFrames.help.lhs b/Help/UGen/bufFrames.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufFrames.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-> import Sound.SC3
-
-Load sound file to buffer zero (required for examples)
-
-> fn_01 = "/home/rohan/data/audio/pf-c5.aif"
-
-
-> m_01 = b_allocRead 0 fn_01 0 0
-
-    > withSC3 (async m_01)
-
-Read without loop, trigger reset based on buffer duration
-
-> g_01 =
->     let p = phasor AR 0 (bufRateScale KR 0) 0 (bufFrames KR 0) 0
->     in bufRdL 1 AR 0 p NoLoop
-
-Mouse location drags play head
-
-> g_02 =
->     let r = mce [0.05,0.075 .. 0.15]
->         p = k2a (mouseX KR 0 (bufFrames KR 0) Linear r)
->     in mix (bufRdL 1 AR 0 p NoLoop)
diff --git a/Help/UGen/bufRateScale.help.lhs b/Help/UGen/bufRateScale.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufRateScale.help.lhs
+++ /dev/null
@@ -1,24 +0,0 @@
-> import Sound.SC3 {- hsc 3 -}
-
-Load sound file to buffer zero (required for examples)
-
-> fn_01 = "/home/rohan/rd/j/2019-04-21/FAIRLIGHT/IIX/REEDS/clarmdhi.snd"
-
-> m_01 = b_allocRead 0 fn_01 0 0
-
-    > withSC3 (async m_01)
-
-> f_01 m =
->     let r = m * bufRateScale KR 0
->         p = phasor AR 0 r 0 (bufFrames KR 0) 0
->     in bufRdL 1 AR 0 p NoLoop
-
-> g_01 = f_01 1.0 * 0.5
-
-    > audition (sinOsc AR (midiCPS 69) 0 * 0.2)
-
-Read buffer at ~ 3/4 reported sample rate.
-
-> g_02 = f_01 (midiRatio (-5)) * 0.5
-
-    > audition (sinOsc AR (midiCPS 64) 0 * 0.2)
diff --git a/Help/UGen/bufRd.help.lhs b/Help/UGen/bufRd.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufRd.help.lhs
+++ /dev/null
@@ -1,40 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Load sound file to buffer zero (required for examples)
-
-> fn_01 = "/home/rohan/data/audio/pf-c5.aif"
-
-    > withSC3 (async (b_allocRead 0 fn_01 0 0))
-
-Phasor as phase input
-
-> g_01 =
->     let sc = bufRateScale KR 0
->         tr = impulse AR (recip (bufDur KR 0)) 0
->         ph = phasor AR tr sc 0 (bufFrames KR 0) 0
->     in bufRdL 1 AR 0 ph NoLoop
-
-Audio rate sine oscillator as phase input
-
-> g_02 =
->     let phase = sinOsc AR 0.1 0 * bufFrames KR 0 * bufRateScale KR 0
->     in bufRd 1 AR 0 phase Loop NoInterpolation
-
-There are constructors, bufRd{N|L|C}, for the fixed cases.
-
-> g_03 =
->     let x = mouseX KR (mce [5, 10]) 100 Linear 0.1
->         n = lfNoise1 'α' AR x
->     in bufRdL 1 AR 0 (n * bufFrames KR 0 * bufRateScale KR 0) Loop
-
-Allocate and generate (non-wavetable) buffer
-
-    > withSC3 (do {_ <- async (b_alloc 11 256 1)
-    >             ;let f = [Normalise,Clear]
-    >              in send (b_gen_sine1 11 f [1,1/2,1/3,1/4,1/5])})
-
-Fixed frequency wavetable oscillator
-
-> g_04 =
->     let phase = linLin (saw AR 440) (-1) 1 0 1 * bufFrames KR 11
->     in bufRd 1 AR 11 phase Loop NoInterpolation * 0.1
diff --git a/Help/UGen/bufSampleRate.help.lhs b/Help/UGen/bufSampleRate.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufSampleRate.help.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Load sound file to buffer zero (required for examples)
-
-> fn_01 = "/home/rohan/data/audio/pf-c5.aif"
-
-> m_01 = b_allocRead 0 fn_01 0 0
-
-    > withSC3 (async m_01)
-
-Sine tone derived from sample rate of buffer (ie. 48000 / 100 == 480) and a 440Hz tone.
-
-> g_01 =
->     let f = mce [bufSampleRate KR 0 * 0.01, 440]
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/bufWr.help.lhs b/Help/UGen/bufWr.help.lhs
deleted file mode 100644
--- a/Help/UGen/bufWr.help.lhs
+++ /dev/null
@@ -1,27 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-allocate a buffer (id = 0) for writing into
-
-    > withSC3 (send (b_alloc 0 (44100 * 2) 1))
-
-write into the buffer (id = 0) with a bufWr
-
-> wr_gr =
->     let rt = control KR "wr-rate" 1
->         o = sinOsc AR (lfNoise1 'α' KR 2 * 300 + 400) 0 * 0.1
->         w = bufWr 0 (phasor AR 0 (bufRateScale KR 0 * rt) 0 (bufFrames KR 0) 0) Loop o
->     in mrg2 (silent 1) w
-
-read it with a BufRd
-
-> rd_gr =
->     let rt = control KR "rd-rate" 1
->     in bufRdL 1 AR 0 (phasor AR 0 (bufRateScale KR 0 * rt) 0 (bufFrames KR 0) 0) Loop
-
-    > audition wr_gr
-    > audition rd_gr
-
-set read & write rates independently
-
-    > withSC3 (send (n_set1 1 "wr-rate" 0.25))
-    > withSC3 (send (n_set1 1 "rd-rate" 13.0))
diff --git a/Help/UGen/cOsc.help.lhs b/Help/UGen/cOsc.help.lhs
deleted file mode 100644
--- a/Help/UGen/cOsc.help.lhs
+++ /dev/null
@@ -1,35 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Allocate and fill buffer.
-
-> gen_tbl b p = let f = [Normalise,Wavetable,Clear] in b_gen_sine1 b f p
-
-> b_01 :: Num n => n {- or {-# Language NoMonomorphismRestriction #-} -}
-> b_01 = 10
-> b_01_setup = [b_alloc b_01 512 1,gen_tbl b_01 [1,1/2,1/3,1/4,1/5,1/6,1/7,1/8,1/9,1/10]]
-
-    > withSC3 (mapM_ async b_01_setup)
-
-Fixed beat frequency
-
-> g_01 = cOsc AR b_01 200 0.7 * 0.1
-
-Modulate beat frequency with mouseX
-
-> g_02 = cOsc AR b_01 200 (mouseX KR 0 4 Linear 0.2) * 0.1
-
-Compare with plain osc
-
-> g_03 = osc AR b_01 200 0.0 * 0.1
-
-Summing behaviour (<http://article.gmane.org/gmane.comp.audio.supercollider.devel/62575>)
-
-> b_02 :: Num n => n
-> b_02 = 11
-> b_02_setup = [b_alloc b_02 512 1,gen_tbl b_02 [1]]
-
-    > withSC3 (mapM_ async b_02_setup)
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen1 0.1 (cOsc AR 11 100 5)
-
-![](sw/hsc3/Help/SVG/cOsc.0.svg)
diff --git a/Help/UGen/changed.help.lhs b/Help/UGen/changed.help.lhs
deleted file mode 100644
--- a/Help/UGen/changed.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-simple composition of hpz1 and greater_than
-
-> g_01 =
->     let s = lfNoise0 'α' KR 2
->         c = changed s 0
->         c' = decay2 c 0.01 0.5
->     in sinOsc AR (440 + mce2 s c' * 440) 0 * 0.1
-
-sinOsc is constantly changing...
-
-> g_02 =
->   let s = sinOsc AR 440 0
->       c = changed s 0
->   in s * c * 0.2
diff --git a/Help/UGen/choose.help.lhs b/Help/UGen/choose.help.lhs
deleted file mode 100644
--- a/Help/UGen/choose.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-    :t choose
-
-choose is a composite of iRand and select.
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let f = uclone 'α' 2 (choose 'β' (mce [440,460 .. 880]))
->     in sinOsc AR f  0 * 0.1
diff --git a/Help/UGen/clip.help.lhs b/Help/UGen/clip.help.lhs
deleted file mode 100644
--- a/Help/UGen/clip.help.lhs
+++ /dev/null
@@ -1,3 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = clip (sinOsc AR 440 0 * 0.4) (-0.25) 0.25
diff --git a/Help/UGen/clip2.help.lhs b/Help/UGen/clip2.help.lhs
deleted file mode 100644
--- a/Help/UGen/clip2.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-clipping distortion
-
-> g_01 = clip2 (fSinOsc AR 400 0) 0.2
-
-> g_02 = clip2 (fSinOsc AR 400 0) (line KR 0 1 8 RemoveSynth)
diff --git a/Help/UGen/clipNoise.help.lhs b/Help/UGen/clipNoise.help.lhs
deleted file mode 100644
--- a/Help/UGen/clipNoise.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> import Sound.SC3
-
-> g_01 = clipNoise 'α' AR * 0.1 {- hsc3 -}
-
-Drawings
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plot_ugen1 0.01 (clipNoise 'α' AR)
-
-![](sw/hsc3/Help/SVG/clipNoise.0.svg)
diff --git a/Help/UGen/coinGate.help.lhs b/Help/UGen/coinGate.help.lhs
deleted file mode 100644
--- a/Help/UGen/coinGate.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let g = coinGate 'α' 0.2 (impulse KR 10 0)
->         f = tRand 'β' 300.0 400.0 g
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/combC.help.lhs b/Help/UGen/combC.help.lhs
deleted file mode 100644
--- a/Help/UGen/combC.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See combN
diff --git a/Help/UGen/combL.help.lhs b/Help/UGen/combL.help.lhs
deleted file mode 100644
--- a/Help/UGen/combL.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See combN
diff --git a/Help/UGen/combN.help.lhs b/Help/UGen/combN.help.lhs
deleted file mode 100644
--- a/Help/UGen/combN.help.lhs
+++ /dev/null
@@ -1,37 +0,0 @@
-Sound.SC3.UGen.Help.viewSC3Help "CombN"
-Sound.SC3.UGen.DB.ugenSummary "CombN"
-
-> import Sound.SC3 {- hsc3 -}
-
-Comb filter as resonator. The resonant fundamental is equal to
-reciprocal of the delay time.
-
-> g_01 =
->     let n = whiteNoise 'α' AR
->         dt = xLine KR 0.0001 0.01 20 RemoveSynth
->     in combN (n * 0.1) 0.01 dt 0.2
-
-> g_02 =
->     let n = whiteNoise 'α' AR
->         dt = xLine KR 0.0001 0.01 20 RemoveSynth
->     in combL (n * 0.1) 0.01 dt 0.2
-
-> g_03 =
->     let n = whiteNoise 'α' AR
->         dt = xLine KR 0.0001 0.01 20 RemoveSynth
->     in combC (n * 0.1) 0.01 dt 0.2
-
-With negative feedback
-
-> g_04 =
->     let n = whiteNoise 'α' AR
->         dt = xLine KR 0.0001 0.01 20 RemoveSynth
->     in combC (n * 0.1) 0.01 dt (-0.2)
-
-Used as an echo.
-
-> g_05 =
->     let d = dust 'α' AR 1
->         n = whiteNoise 'β' AR
->         i = decay (d * 0.5) 0.2 * n
->     in combC i 0.2 0.2 3
diff --git a/Help/UGen/compander.help.lhs b/Help/UGen/compander.help.lhs
deleted file mode 100644
--- a/Help/UGen/compander.help.lhs
+++ /dev/null
@@ -1,46 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Example signal to process.
-
-> g_01 =
->     let e = decay2 (impulse AR 8 0 * lfSaw KR 0.3 0 * 0.3) 0.001 0.3
->         p = mix (pulse AR (mce [80, 81]) 0.3)
->     in e * p
-
-> g_02 = soundIn 0
-
-Noise gate (no hold, no hysteresis)
-
-> f_01 z =
->     let x = mouseX KR 0.01 0.15 Linear 0.1
->     in mce [z, compander z z x 10 1 0.002 0.15]
-
-Compressor
-
-> f_02 z =
->     let x = mouseX KR 0.01 1 Linear 0.1
->     in mce [z, compander z z x 1 (1/3) 0.01 0.01]
-
-Expander
-
-> f_03 z =
->     let x = mouseX KR 0.01 1 Linear 0.1
->     in mce [z, compander z z x 1 3 0.01 0.1]
-
-Limiter
-
-> f_04 z =
->     let x = mouseX KR 0.01 1 Linear 0.1
->     in mce [z, compander z z x 1 (1/10) 0.01 0.01]
-
-Sustainer
-
-> f_05 z =
->     let x = mouseX KR 0.01 0.15 Linear 0.1
->     in mce [z, compander z z x (1/3) 1.0 0.01 0.05]
-
-> g_03 = f_01 g_01
-> g_04 = f_02 g_01
-> g_05 = f_03 g_01
-> g_06 = f_04 g_01
-> g_07 = f_05 g_01
diff --git a/Help/UGen/complexRes.help.lhs b/Help/UGen/complexRes.help.lhs
deleted file mode 100644
--- a/Help/UGen/complexRes.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let s = pulse AR 0.1 0.001 * 0.1
->       fr = 50 + 5000 * sinOsc AR 50 0
->       dt = 0.5
->   in X.complexRes s fr dt
diff --git a/Help/UGen/concat.help.lhs b/Help/UGen/concat.help.lhs
deleted file mode 100644
--- a/Help/UGen/concat.help.lhs
+++ /dev/null
@@ -1,19 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> fn_01 = "/home/rohan/data/audio/pf-c5.snd"
-
-    withSC3 (async (b_allocRead 12 fn_01 0 0))
-
-Granulator
-
-> gr_01 =
->     let y0 = mouseY KR 0.01 1 Linear 0.2
->         y1 = mouseY KR 12 100 Linear 0.2
->         n = lfNoise0 'α' KR y0 * 3 + 4.5
->         k = saw AR (sinOsc KR n 0 * 10 + y1)
->         i = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing
->         x0 = mouseX KR 0.01 0.1 Linear 0.2
->         y2 = mouseY KR 0 0.1 Linear 0.2
->         c :: UGen
->         c = concat' k i 2 2 2 x0 0 y2 1 0.5 0 0
->     in pan2 c 0 1
diff --git a/Help/UGen/controlDur.help.lhs b/Help/UGen/controlDur.help.lhs
deleted file mode 100644
--- a/Help/UGen/controlDur.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-default block size = 64, default sample rate = 48000
-
-> g_01 = sinOsc AR (mce2 (recip controlDur) (controlRate + 1)) 0 * 0.1
-
-> g_02 = sinOsc AR (mce2 (recip controlDur) (recip (blockSize / sampleRate) + 1)) 0 * 0.1
diff --git a/Help/UGen/controlRate.help.lhs b/Help/UGen/controlRate.help.lhs
deleted file mode 100644
--- a/Help/UGen/controlRate.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-play a sine tone at control rate, the reciprocal of controlDur
-
-> g_01 =
->     let f = mce2 controlRate (recip controlDur)
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/convolution.help.lhs b/Help/UGen/convolution.help.lhs
deleted file mode 100644
--- a/Help/UGen/convolution.help.lhs
+++ /dev/null
@@ -1,11 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let k = pinkNoise 'α' AR * 0.1
->       i = soundIn 0
->   in convolution AR i k 2048
-
-> g_02 =
->   let k = mix (lfSaw AR (mce [300,500,800,1000] * mouseX KR 1.0 2.0 Linear 0.2) 0 * 0.1)
->       i = soundIn 0
->   in convolution AR i k 1024 * 0.5
diff --git a/Help/UGen/coyote.help.lhs b/Help/UGen/coyote.help.lhs
deleted file mode 100644
--- a/Help/UGen/coyote.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let i = soundIn 0
->       c = X.coyote KR i 0.2 0.2 0.01 0.5 0.05 0.1
->       o = pinkNoise 'α' AR * decay c 1
->   in mce2 i o
diff --git a/Help/UGen/crackle.help.lhs b/Help/UGen/crackle.help.lhs
deleted file mode 100644
--- a/Help/UGen/crackle.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = crackle AR 1.95 * 0.2
-
-Modulate chaos parameter
-
-> g_02 = crackle AR (line KR 1.0 2.0 3 RemoveSynth) * 0.2
-
-Drawing
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen1 0.01 (crackle AR 1.95)
-    > plot_ugen1 0.025 (crackle AR (line KR 1.0 2.0 0.025 DoNothing))
-
-![](sw/hsc3/Help/SVG/crackle.0.svg)
-![](sw/hsc3/Help/SVG/crackle.1.svg)
diff --git a/Help/UGen/crossoverDistortion.help.lhs b/Help/UGen/crossoverDistortion.help.lhs
deleted file mode 100644
--- a/Help/UGen/crossoverDistortion.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-{CrossoverDistortion.ar(SinOsc.ar([400, 404], 0, 0.2), MouseX.kr(0, 1), MouseY.kr(0, 1))}.play
-
-> g_01 =
->   let x = mouseX KR 0 1 Linear 0.2
->       y = mouseY KR 0 1 Linear 0.2
->   in X.crossoverDistortion (sinOsc AR (mce2 400 404) 0 * 0.2) x y
-
-{CrossoverDistortion.ar(SoundIn.ar, MouseX.kr(0, 1), MouseY.kr(0, 1))}.play
-
-> g_02 =
->   let x = mouseX KR 0 1 Linear 0.2
->       y = mouseY KR 0 1 Linear 0.2
->   in X.crossoverDistortion (soundIn 0) x y
diff --git a/Help/UGen/cuspL.help.lhs b/Help/UGen/cuspL.help.lhs
deleted file mode 100644
--- a/Help/UGen/cuspL.help.lhs
+++ /dev/null
@@ -1,35 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.Common.Math.Noise {- hsc3 -}
-
-Default values
-
-> g_00 = cuspL AR 22050 1.0 1.9 0.0 * 0.1
-
-Vary frequency
-
-> g_01 =
->     let x = mouseX KR 20 (sampleRate / 2) Linear 0.1
->     in cuspL AR x 1.0 1.99 0 * 0.3
-
-Mouse-controlled parameters.
-
-> g_02 =
->     let x = mouseX KR 0.9 1.1 Linear 0.1
->         y = mouseY KR 1.8 2.0 Linear 0.1
->     in cuspL AR (sampleRate / 4) x y 0 * 0.3
-
-As frequency control.
-
-> g_03 =
->     let x = mouseX KR 0.9 1.1 Linear 0.1
->         y = mouseY KR 1.8 2.0 Linear 0.1
->         n = cuspL AR 40 x y 0 * 0.3
->     in sinOsc AR (n * 800 + 900) 0 * 0.4
-
-Haskell implementation of equation.
-
-> cusp_hs a b = iterate (cusp_f a b) 0
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plotTable1 (take 600 (cusp_hs 1.0 1.9))
-    plot_ugen_nrt (600,1) 1.0 (cuspL AR 600 1.0 1.9 0)
diff --git a/Help/UGen/cuspN.help.lhs b/Help/UGen/cuspN.help.lhs
deleted file mode 100644
--- a/Help/UGen/cuspN.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See cuspL
diff --git a/Help/UGen/dNoiseRing.help.lhs b/Help/UGen/dNoiseRing.help.lhs
deleted file mode 100644
--- a/Help/UGen/dNoiseRing.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let tr = impulse AR 10 0
->       x = mouseX KR 0 1 Linear 0.2
->       y = mouseY KR 0 1 Linear 0.2
->       nr = demand tr 0 (X.dNoiseRing x y 1.0 32.0 0.0)
->       freq = midiCPS (linLin nr 0 (2**32) 40 (40 + 48))
->   in sinOsc AR freq 0 * 0.1
diff --git a/Help/UGen/dWGBowed.help.lhs b/Help/UGen/dWGBowed.help.lhs
deleted file mode 100644
--- a/Help/UGen/dWGBowed.help.lhs
+++ /dev/null
@@ -1,25 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let k = control KR
->       out_ = k "out" 0
->       freq = k "freq" 440
->       amp = k "amp" 0.5
->       force = k "force" 1
->       gate_ = k "gate" 1
->       pos = k "pos" 0.07
->       c1 = k "c1" 0.25
->       c3 = k "c3" 31
->       pan = k "pan" 0
->       vib = gendy1 'α' KR 1 1 1 1 0.1 4 0.5 0.5 12 0 * 0.003 + 1
->       s1 = X.dWGBowed AR (freq  *vib) amp force gate_ pos 0.1 c1 c3 0.55 2
->       s2 = X.dWGSoundBoard AR s1 20 20 0.8 199 211 223 227 229 233 239 241
->       s3 = bpf s2 118 1 + s2
->       s4 = bpf s3 430 1 + s3
->       s5 = bpf s4 490 1 + s4
->       s6 = lpf s5 6000
->   in out out_ (pan2 (s6 * 0.1) pan 1)
-
-    > import Sound.OSC {- hosc -}
-    > withSC3 (sendMessage (n_set1 (-1) "gate" 0))
diff --git a/Help/UGen/dWGBowedTor.help.lhs b/Help/UGen/dWGBowedTor.help.lhs
deleted file mode 100644
--- a/Help/UGen/dWGBowedTor.help.lhs
+++ /dev/null
@@ -1,25 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let k = control KR
->       out_ = k "out" 0
->       freq = k "freq" 440
->       amp = k "amp" 0.5
->       force = k "force" 1
->       gate_ = k "gate" 1
->       pos = k "pos" 0.07
->       c1 = k "c1" 0.25
->       c3 = k "c3" 31
->       pan = k "pan" 0
->       vib = gendy1 'α' KR 1 1 1 1 0.1 4 0.5 0.5 12 0 * 0.003 + 1
->       s1 = X.dWGBowedTor AR (freq  *vib) amp force gate_ pos 0.1 c1 c3 0.55 2 5.2 1 3000 1.8
->       s2 = X.dWGSoundBoard AR s1 20 20 0.8 199 211 223 227 229 233 239 241
->       s3 = bpf s2 118 1 + s2
->       s4 = bpf s3 430 1 + s3
->       s5 = bpf s4 490 1 + s4
->       s6 = lpf s5 6000
->   in out out_ (pan2 (s6 * 0.1) pan 1)
-
-    > import Sound.OSC {- hosc -}
-    > withSC3 (sendMessage (n_set1 (-1) "gate" 0))
diff --git a/Help/UGen/dWGPlucked2.help.lhs b/Help/UGen/dWGPlucked2.help.lhs
deleted file mode 100644
--- a/Help/UGen/dWGPlucked2.help.lhs
+++ /dev/null
@@ -1,50 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-self deleting
-
-> g_01 =
->   let freq = 440
->       amp = 0.5
->       gate_ = 1
->       c3 = 20
->       inp = let e = envelope [0,1,1,0] [0.001,0.006,0.0005] (map EnvNum [5,-5,-8])
->             in amp * lfClipNoise 'α' AR 2000 * envGen AR gate_ 1 0 1 DoNothing e
->       ps = X.dWGPlucked2 AR freq amp gate_ 0.1 1 c3 inp 0.1 1.008 0.55 0.01
->       pan = 0
->       z = detectSilence ps 0.001 0.1 RemoveSynth
->   in mrg2 (pan2 ps pan 0.1) z
-
-re-sounding
-
-> f_02 dur =
->   let sequ e s tr = demand tr 0 (dseq e dinf (mce s))
->       t = let d = dseq 'α' dinf dur
->           in tDuty AR d 0 DoNothing 1 0
->       freq = let n0 = sequ 'β' [60,62,63,58,48,55] t
->                  n1 = sequ 'γ' [63,60,48,62,55,58] t
->              in midiCPS (mce2 n0 n1)
->       amp = tRand 'δ' 0.01 0.35 t -- pulse amplitude (0  - 1, def = 0.5)
->       gate_ = 1 -- synth release
->       pos = tRand 'ε' 0.05 0.25 t -- pluck position (0 - 1, def = 0.14)
->       c1 = 1 / tRand 'ζ' 0.25 1.75 t -- reciprocal of decay time (def = 1.0)
->       c3 = tRand 'η' 10 1400 t -- high frequency loss factor (def = 30)
->       inp = let e_dt = tRand 'θ' 0.05 0.150 t
->                 env = decay2 t 0.001 e_dt * lfClipNoise 'ι' AR 2000
->             in amp * lfClipNoise 'κ' AR 2000 * env -- pluck signal
->       release = tRand 'λ' 0.05 0.15 t -- release time (seconds, def = 0.1)
->       mistune = tRand 'μ' 0.992 1.008 t -- factor for detuning second string (def = 1.008)
->       mp = tRand 'ν' 0.35 0.65 t -- excitation mixer (def = 0.55)
->       gc = tRand 'ξ' 0.001 0.020 t -- coupling string factor (def = 0.01)
->       ps = X.dWGPlucked2 AR freq amp gate_ pos c1 c3 inp release mistune mp gc
->       pan = tRand 'ο' (-1) 1 t
->   in pan2 ps pan 0.1
-
-> g_02 = f_02 (mce [1,1,2,1,1,1,2,3,1,1,1,1,2,3,4] * 0.175)
-
-and scaling
-
-> g_03 =
->   let m = mouseX KR 0.25 2.0 Linear 0.2
->       d = 1 / (2 ** roundE (mce [1,1,2,1,1,1,2,3,1,1,1,1,2,3,4]))
->   in f_02 (d * m)
diff --git a/Help/UGen/dWGPluckedStiff.help.lhs b/Help/UGen/dWGPluckedStiff.help.lhs
deleted file mode 100644
--- a/Help/UGen/dWGPluckedStiff.help.lhs
+++ /dev/null
@@ -1,43 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-self deleting
-
-> g_01 =
->   let freq = 440
->       amp = 0.5
->       gate_ = 1
->       pos = 0.14
->       c1 = 1
->       c3 = 30
->       inp = let e = envelope [0,1,1,0] [0.001,0.006,0.0005] (map EnvNum [5,-5,-8])
->             in amp * lfClipNoise 'α' AR 2000 * envGen AR gate_ 1 0 1 DoNothing e
->       release = 0.1
->       fB = 2.0
->       ps = X.dWGPluckedStiff AR freq amp gate_ pos c1 c3 inp release fB
->       pan = 0
->       z = detectSilence ps 0.001 0.1 RemoveSynth
->   in mrg2 (pan2 ps pan 0.1) z
-
-re-sounding
-
-> g_02 =
->   let sequ e s tr = demand tr 0 (dseq e dinf (mce s))
->       t = let d = dseq 'α' dinf (mce [1,1,2,1,1,1,2,3,1,1,1,1,2,3,4] * 0.175)
->           in tDuty AR d 0 DoNothing 1 0
->       freq = let n0 = sequ 'β' [60,62,63,58,48,55] t
->                  n1 = sequ 'γ' [63,60,48,62,55,58] t
->              in midiCPS (mce2 n0 n1)
->       amp = tRand 'δ' 0.05 0.65 t -- pulse amplitude (0  - 1, def = 0.5)
->       gate_ = 1 -- synth release
->       pos = tRand 'ε' 0.05 0.25 t -- pluck position (0 - 1, def = 0.14)
->       c1 = 1 / tRand 'ζ' 0.25 1.75 t -- reciprocal of decay time (def = 1.0)
->       c3 = tRand 'η' 10 1400 t -- high frequency loss factor (def = 30)
->       inp = let e_dt = tRand 'θ' 0.05 0.150 t
->                 env = decay2 t 0.001 e_dt * lfClipNoise 'ι' AR 2000
->             in amp * lfClipNoise 'κ' AR 2000 * env -- pluck signal
->       release = tRand 'λ' 0.05 0.15 t -- release time (seconds, def = 0.1)
->       fB = tRand 'μ' 1.0 4.0 t -- inharmonicity factor (def = 2.0)
->       ps = X.dWGPluckedStiff AR freq amp gate_ pos c1 c3 inp release fB
->       pan = tRand 'ο' (-1) 1 t
->   in pan2 ps pan 0.1
diff --git a/Help/UGen/dbAmp.help.lhs b/Help/UGen/dbAmp.help.lhs
deleted file mode 100644
--- a/Help/UGen/dbAmp.help.lhs
+++ /dev/null
@@ -1,11 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Linear db motion is exponential amplitude decay
-
-> g_01 =
->     let a = dbAmp (line KR (-12) (-40) 10 RemoveSynth)
->     in fSinOsc AR 800 0 * a
-
-There is a non-UGen variant.
-
-    > dbAmp (-26::Double) == 0.05011872336272722
diff --git a/Help/UGen/dbrown.help.lhs b/Help/UGen/dbrown.help.lhs
deleted file mode 100644
--- a/Help/UGen/dbrown.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let n = dbrown 'α' dinf 0 15 1 {- Dbrown(0, 15, 1, inf) -}
->       x = mouseX KR 1 40 Exponential 0.1
->       t = impulse KR x 0
->       f = demand t 0 n * 30 + 340
->   in sinOsc AR f 0 * 0.1
-
-> g_02 =
->   let n = demand (impulse KR 10 0) 0 (dbrown 'α' dinf (-1) 1 0.05)
->       f = linExp n (-1) 1 64 9600
->   in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/dbufrd.help.lhs b/Help/UGen/dbufrd.help.lhs
deleted file mode 100644
--- a/Help/UGen/dbufrd.help.lhs
+++ /dev/null
@@ -1,39 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import System.Random {- random -}
-
-setup pattern at buffer 10
-
-    > let n = randomRs (200.0,500.0) (mkStdGen 0)
-    > in withSC3 (async (b_alloc_setn1 10 0 (take 24 n)))
-
-pattern as frequency input
-
-> g_01 =
->     let s = dseq 'α' 3 (mce [0,3,5,0,3,7,0,5,9])
->         b = dbrown 'β' 5 0 23 1
->         p = dseq 'γ' dinf (mce [s,b])
->         t = dust 'δ' KR 10
->         r = dbufrd 'ε' 10 p Loop
->     in sinOsc AR (demand t 0 r) 0 * 0.1
-
-setup time pattern
-
-    > let {i = randomRs (0,2) (mkStdGen 0)
-    >     ;n = map ([1,0.5,0.25] !!) i}
-    > in withSC3 (async (b_alloc_setn1 11 0 (take 24 n)))
-
-requires buffers 10 and 11 as allocated above
-
-> g_02 =
->     let s = dseq 'α' 3 (mce [0,3,5,0,3,7,0,5,9])
->         b = dbrown 'β' 5 0 23 1
->         p = dseq 'γ' dinf (mce [s,b])
->         j = dseries 'δ' dinf 0 1
->         d = dbufrd 'ε' 11 j Loop
->         l = dbufrd 'ζ' 10 p Loop
->         f = duty KR (d * 0.5) 0 DoNothing l
->     in sinOsc AR f 0 * 0.1
-
-free buffers
-
-    > withSC3 (async (b_free 10) >> async (b_free 11))
diff --git a/Help/UGen/dbufwr.help.lhs b/Help/UGen/dbufwr.help.lhs
deleted file mode 100644
--- a/Help/UGen/dbufwr.help.lhs
+++ /dev/null
@@ -1,52 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-allocate buffer
-
-    > withSC3 (async (b_alloc_setn1 0 0 (replicate 24 210)))
-
-monadic graph constructor (type `C-cM-a` at g_01 to hear, `C-cM-g` to see)
-
-> g_01 :: UId m => m UGen
-> g_01 = do
->   s1 <- dseriesM 30 0 3
->   s2 <- dseriesM 30 0 1
->   s3 <- dseriesM 16 1 1
->   s4 <- dwhiteM 8 1 16
->   s5 <- dseqM dinf (mce2 s3 s4)
->   wt <- dustM KR 1                  {- write trigger -}
->   rp <- dseriesM dinf 0 1           {- read pointer -}
->   wp <- dseqM dinf (mce2 s1 s2)     {- write pointer -}
->   r <- dbufrdM 0 rp Loop            {- reader -}
->   w <- dbufwrM 0 wp (s5 * 60) Loop  {- writer -}
->   let d = demand wt 0 w
->       f = lag (demand (impulse KR 16 0) 0 r) 0.01
->       o = sinOsc AR (f * mce2 1 1.01) 0 * 0.1
->   return (mrg [d, out 0 o])
-
-variant written using a local buffer and uid ugen forms
-
-> g_02 =
->     let b = asLocalBuf 'α' (replicate 24 210)
->         s = dseq 'β' dinf (mce2 (dseries 'γ' 16 1 1) (dwhite 'δ' 8 1 16))
->         rp = dseries 'ε' dinf 0 1 {- read pointer -}
->         wp = dseq 'ζ' dinf (mce2 (dseries 'η' 30 0 3) (dseries 'θ' 30 0 1)) {- write pointer -}
->         r = dbufrd 'ι' b rp Loop {- reader -}
->         w = dbufwr 'κ' b wp (s * 60) Loop {- writer -}
->         d = demand (dust 'λ' KR 1) 0 w
->         f = lag (demand (impulse KR 16 0) 0 r) 0.01
->         o = sinOsc AR (f * mce2 1 1.01) 0 * 0.1
->     in mrg2 d (out 0 o)
-
-demand rate single memory recurrence relation.
-
-> rec1 z k t f =
->   let b = asLocalBuf z [k]
->       r = dbufrd z b 0 Loop {- reader -}
->       w = dbufwr z b 0 (f r) Loop {- writer -}
->   in mrg2 (demand t 0 r) (demand t 0 w)
-
-simple counter, written in terms of rec1.
-
-> g_03 =
->     let f = rec1 'α' 0 (impulse KR 6 0) (\r -> (r + 1) `modE` 24)
->     in sinOsc AR (midiCPS (60 + f)) 0 * 0.1
diff --git a/Help/UGen/dc.help.lhs b/Help/UGen/dc.help.lhs
deleted file mode 100644
--- a/Help/UGen/dc.help.lhs
+++ /dev/null
@@ -1,22 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-error...
-
-> g_01 = 0 :: UGen
-
-    > withSC3 (send (n_trace [-1]))
-
-zero
-
-> g_02 = dc AR 0
-
-DC offset; will click on start and finish
-
-> g_03 = dc AR 0.5
-> g_04 = 0.5 + sinOsc AR 440 0 * 0.1
-> g_05 = dc AR 0.5 + sinOsc AR 440 0 * 0.1
-
-Transient before LeakDC adapts and suppresses the offset?
-
-> g_06 = dc AR 1
-> g_07 = leakDC (dc AR 1) 0.995
diff --git a/Help/UGen/dconst.help.lhs b/Help/UGen/dconst.help.lhs
deleted file mode 100644
--- a/Help/UGen/dconst.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-fast notes of random duration for 0.5 seconds, then a single note for 0.5 seconds
-
-there is no Dexprand
-
-> dexprand z rp l r = lin_exp (dwhite z rp 0 1) 0 1 l r
-
-> g_01 =
->   let t = dconst 'α' 0.5 (dwhite 'β' dinf 0.05 0.08) 0.001
->       f = duty KR (dseq 'γ' dinf (mce2 t 0.5)) 0 DoNothing (dexprand 'δ' dinf 200 600)
->   in varSaw AR (lag f 0.02) 0 0.3 * 0.1
diff --git a/Help/UGen/decay.help.lhs b/Help/UGen/decay.help.lhs
deleted file mode 100644
--- a/Help/UGen/decay.help.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Used as an envelope.
-
-> g_01 =
->     let n = pinkNoise 'α' AR -- sinOsc AR 11000 0
->         s = impulse AR (xLine KR 1 50 20 RemoveSynth) 0.25
->     in decay s 0.2 * n
-
-Drawing
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen1 0.05 (decay (impulse AR 1 0) 0.01)
-
-![](sw/hsc3/Help/SVG/decay.0.svg)
diff --git a/Help/UGen/decay2.help.lhs b/Help/UGen/decay2.help.lhs
deleted file mode 100644
--- a/Help/UGen/decay2.help.lhs
+++ /dev/null
@@ -1,24 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Used as an envelope
-
-> g_01 =
->     let s = fSinOsc AR 600 0 * 0.25 -- sinOsc AR 11000 0 * 0.25
->         f = xLine KR 1 50 20 RemoveSynth
->     in decay2 (impulse AR f 0) 0.01 0.2 * s
-
-Compare the above with Decay used as the envelope.
-
-> g_02 =
->     let s = fSinOsc AR 600 0 * 0.25
->         f = xLine KR 1 50 20 RemoveSynth
->     in decay (impulse AR f 0) 0.2 * s
-
-Drawings, attack and decay are a difference of two decays, hence inversion
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen1 0.05 (decay2 (impulse AR 1 0) 0.001 0.01)
-    > plot_ugen1 0.05 (decay2 (impulse AR 1 0) 0.01 0.001)
-
-![](sw/hsc3/Help/SVG/decay2.0.svg)
-![](sw/hsc3/Help/SVG/decay2.1.svg)
diff --git a/Help/UGen/degreeToKey.help.lhs b/Help/UGen/degreeToKey.help.lhs
deleted file mode 100644
--- a/Help/UGen/degreeToKey.help.lhs
+++ /dev/null
@@ -1,24 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-allocate & initialise buffer zero
-
-> m_01 = b_alloc_setn1 0 0 [0,2,3.2,5,7,9,10]
-
-    > withSC3 (async m_01)
-
-modal space, mouse x controls discrete pitch in dorian mode
-
-> f_01 buf =
->     let x = mouseX KR 0 15 Linear 0.1
->         k = degreeToKey buf x 12
->         f b = let n = lfNoise1 'α' KR (mce [3,3.05])
->                   o = sinOsc AR (midiCPS (b + k + n * 0.04)) 0 * 0.1
->                   t = lfPulse AR (midiCPS (mce [48,55])) 0.15 0.5
->                   d = rlpf t (midiCPS (sinOsc KR 0.1 0 * 10 + b)) 0.1 * 0.1
->                   m = o + d
->               in combN m 0.31 0.31 2 + m
->     in (f 48 + f 72) * 0.25
-
-> g_01 = f_01 0
-
-> g_02 = f_01 (asLocalBuf 'β' [0,2,3.2,5,7,9,10])
diff --git a/Help/UGen/delay1.help.lhs b/Help/UGen/delay1.help.lhs
deleted file mode 100644
--- a/Help/UGen/delay1.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = let s = impulse AR 1 0 in s + (delay1 s)
-
-left=original, right=subtract delayed from original
-
-> g_02 = let z = dust 'α' AR 1000 in mce2 z (z - delay1 z)
diff --git a/Help/UGen/delay2.help.lhs b/Help/UGen/delay2.help.lhs
deleted file mode 100644
--- a/Help/UGen/delay2.help.lhs
+++ /dev/null
@@ -1,3 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = let s = impulse AR 1 0 in s + (delay2 s)
diff --git a/Help/UGen/delayC.help.lhs b/Help/UGen/delayC.help.lhs
deleted file mode 100644
--- a/Help/UGen/delayC.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See delayN
diff --git a/Help/UGen/delayL.help.lhs b/Help/UGen/delayL.help.lhs
deleted file mode 100644
--- a/Help/UGen/delayL.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-See delayN
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let t = mouseX KR 0.001 0.2 Exponential 0.2
->       s = impulse AR 1 0
->       d = delayL s 0.6 t
->   in mce2 d s
-
diff --git a/Help/UGen/delayN.help.lhs b/Help/UGen/delayN.help.lhs
deleted file mode 100644
--- a/Help/UGen/delayN.help.lhs
+++ /dev/null
@@ -1,31 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Dust randomly triggers Decay to create an exponential decay envelope
-for the WhiteNoise input source.  The input is left, the delay right.
-
-> g_01 =
->     let i = decay (dust 'α' AR 1) 0.3 * whiteNoise 'β' AR
->     in mce2 i (delayN i 0.1 0.1)
-
-The delay time can be varied at control rate.  An oscillator either
-reinforcing or cancelling with the delayed copy of itself.
-
-> g_02 =
->     let i = sinOsc AR 320 0 * 0.1
->         maxdelaytime = 0.005
->         delaytime = mouseX KR 0.0 maxdelaytime Linear 0.15
->     in i + delayN i maxdelaytime delaytime
-
-Flanging
-
-> f_03 lp_f =
->   let f = 0.1 -- flanger freq
->       g = 0.1 -- feedback
->       i = soundIn (mce2 0 1) -- two channels of input signal
->       fb = i + localIn 2 AR 0 -- add feedback
->       e = delayN fb 0.02 (sinOsc KR f 0 * 0.005 + 0.005) -- max delay of 20msec
->       o = localOut (lp_f e * g)
->   in mrg2 (i + e) o
-
-> g_03 = f_03 id
-> g_04 = f_03 (\x -> bpf x (mouseX KR 1000 10000 Linear 0.2) 0.1) -- filter in the feedback loop
diff --git a/Help/UGen/demand.help.lhs b/Help/UGen/demand.help.lhs
deleted file mode 100644
--- a/Help/UGen/demand.help.lhs
+++ /dev/null
@@ -1,45 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 :: UId m => m UGen
-> g_01 = do
->   r <- dustM KR 1
->   s <- dgeomM dinf (midiCPS 72) (midiRatio 1)
->   let t = impulse KR 10 0
->       f = demand t r s
->       o = sinOsc AR (mce [f,f + 0.7]) 0
->   return (max (cubed o) 0 * 0.1)
-
-> g_02 =
->     let n = diwhite 'α' dinf 60 72
->         t = impulse KR 10 0
->         s = midiCPS n
->         f = demand t 0 s
->         o = sinOsc AR (mce [f,f + 0.7]) 0
->     in cubed (cubed o) * 0.1
-
-audio rate (poll output is equal for x1 and x2)
-
-> g_03 =
->     let i = lfNoise2 'α' AR 8000
->         d = dseq 'β' dinf (mce [i])
->         x = mouseX KR 1 3000 Exponential 0.2
->         t = impulse AR x 0
->         x1 = demand t 0 d
->         x2 = latch i t
->         s = mce2 x1 x2
->         p = poll t s 0 (mce2 (label "x1") (label "x2"))
->         o = sinOsc AR (s * 300 + 400) 0 * 0.1
->     in mrg2 o p
-
-> g_04 =
->   let t = impulse AR 5 0
->       d1 = dseq 'α' dinf (mce [1,0,1,1,0,1,0,0,1,0,1])
->       d2 = dseq 'β' dinf (mce [0,1,0,0,1,0,1,1,0,1,0])
->       x = demand t 0 (mce2 d1 d2) * t
->   in decay x 1 * brownNoise 'γ' AR * 0.1
-
-> g_05 =
->   let t = impulse AR 5 0
->       d = drand 'α' dinf (mce [dseq 'β' 1 (mce [1,1,1,1]),dseq 'γ' 1 (mce [1,0,0,0])])
->       x = demand t 0 d * t
->   in decay x 1 * brownNoise 'δ' AR * 0.1
diff --git a/Help/UGen/demandEnvGen.help.lhs b/Help/UGen/demandEnvGen.help.lhs
deleted file mode 100644
--- a/Help/UGen/demandEnvGen.help.lhs
+++ /dev/null
@@ -1,109 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Frequency ramp, exponential curve.
-
-> g_01 =
->     let l = dseq 'α' dinf (mce2 440 9600)
->         y = mouseY KR 0.01 3 Exponential 0.2
->         s = env_curve_shape EnvExp
->         f = demandEnvGen AR l y s 0 1 1 1 0 1 DoNothing
->     in sinOsc AR f 0 * 0.1
-
-Frequency envelope with random times.
-
-> g_02 =
->     let l = dseq 'α' dinf (mce [204,400,201,502,300,200])
->         t = drand 'β' dinf (mce [1.01,0.2,0.1,2.0])
->         y = mouseY KR 0.01 3 Exponential 0.2
->         s = env_curve_shape EnvCub
->         f = demandEnvGen AR l (t * y) s 0 1 1 1 0 1 DoNothing
->     in sinOsc AR (f * mce2 1 1.01) 0 * 0.1
-
-Frequency modulation
-
-> g_03 =
->     let n = dwhite 'α' dinf 200 1000
->         x = mouseX KR (-0.01) (-4) Linear 0.2
->         y = mouseY KR 1 3000 Exponential 0.2
->         s = env_curve_shape (EnvNum undefined)
->         f = demandEnvGen AR n (sampleDur * y) s x 1 1 1 0 1 DoNothing
->     in sinOsc AR f 0 * 0.1
-
-Short sequence with doneAction, linear
-
-> g_04 =
->     let l = dseq 'α' 1 (mce [1300,500,800,300,400])
->         s = env_curve_shape EnvLin
->         f = demandEnvGen KR l 2 s 0 1 1 1 0 1 RemoveSynth
->     in sinOsc AR (f * mce2 1 1.01) 0 * 0.1
-
-Gate, mouse x on right side of screen toggles gate
-
-> g_05 =
->     let n = roundTo (dwhite 'α' dinf 300 1000) 100
->         x = mouseX KR 0 1 Linear 0.2
->         g = x >** 0.5
->         f = demandEnvGen AR n 0.1 5 0.3 g 1 1 0 1 DoNothing
->     in sinOsc AR (f * mce2 1 1.21) 0 * 0.1
-
-gate
-mouse x on right side of screen toggles sample and hold
-mouse button does hard reset
-
-> g_06 =
->     let l = dseq 'α' 2 (mce [dseries 'β' 5 400 200,500,800,530,4000,900])
->         x = mouseX KR 0 1 Linear 0.2
->         g = (x >** 0.5) - 0.1
->         b = mouseButton KR 0 1 0.2
->         r = (b >** 0.5) * 2
->         s = env_curve_shape EnvSin
->         f = demandEnvGen KR l 0.1 s 0 g r 1 0 1 DoNothing
->     in sinOsc AR (f * mce2 1 1.001) 0 * 0.1
-
-initialise coordinate buffer
-layout is (initial-level,duration,level,..,loop-duration)
-
-    > withSC3 (async (b_alloc_setn1 0 0 [0,0.5,0.1,0.5,1,0.01]))
-
-> g_07 =
->     let b = 0
->         l_i = dseries 'β' dinf 0 2
->         d_i = dseries 'γ' dinf 1 2
->         l = dbufrd 'δ' b l_i Loop
->         d = dbufrd 'ε' b d_i Loop
->         s = env_curve_shape EnvLin
->         e = demandEnvGen KR l d s 0 1 1 1 0 5 RemoveSynth
->         f = midiCPS (60 + (e * 12))
->     in sinOsc AR (f * mce2 1 1.01) 0 * 0.1
-
-change envelope by setting values or indeed reallocating buffer
-
-    > import Sound.OSC {- hosc -}
-    > withSC3 (sendMessage (b_set1 0 1 0.1))
-    > withSC3 (async (b_alloc_setn1 0 0 [0.5,0.9,0.1,0.1,1,0.01]))
-
-read envelope break-points from buffer, here simply duration/level pairs.
-the behavior is odd if the curve is zero (ie. flat segments).
-
-> g_08 =
->     let b = asLocalBuf 'α' [61,1,60,2,72,1,55,5,67,9,67]
->         lvl = dbufrd 'β' b (dseries 'γ' 6 0 2) Loop
->         dur = dbufrd 'δ' b (dseries 'ε' 5 1 2) Loop
->         e = demandEnvGen KR lvl dur 1 0 1 1 1 0 1 RemoveSynth
->     in sinOsc AR (midiCPS e) 0 * 0.1
-
-lfNoise1
-
-> g_09 =
->     let y = mouseY KR 0.5 20 Linear 0.2
->         lvl = dwhite 'β' dinf (-0.1) 0.1
->         dur = sampleDur * y
->     in demandEnvGen AR lvl dur 5 (-4) 1 1 1 0 1 RemoveSynth
-
-lfBrownNoise
-
-> g_10 =
->     let y = mouseY KR 1 100 Exponential 0.2
->         lvl = dbrown 'β' dinf (-0.1) 0.1 0.1
->         dur = sampleDur * y
->     in demandEnvGen AR lvl dur 1 0 1 1 1 0 1 RemoveSynth
diff --git a/Help/UGen/detectIndex.help.lhs b/Help/UGen/detectIndex.help.lhs
deleted file mode 100644
--- a/Help/UGen/detectIndex.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Find indexes and map to an audible frequency range.
-
-> g_01 =
->     let n = 6
->         x = floorE (mouseX KR 0 n Linear 0.1)
->         i = detectIndex (asLocalBuf 'α' [2,3,4,0,1,5]) x
->     in sinOsc AR (linExp i 0 n 200 700) 0 * 0.1
diff --git a/Help/UGen/detectSilence.help.lhs b/Help/UGen/detectSilence.help.lhs
deleted file mode 100644
--- a/Help/UGen/detectSilence.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let s = sinOsc AR 440 0 * mouseY KR 0 0.2 Linear 0.1
->         d = detectSilence s 0.01 0.1 RemoveSynth
->     in mrg [s,d]
diff --git a/Help/UGen/dfm1.help.lhs b/Help/UGen/dfm1.help.lhs
deleted file mode 100644
--- a/Help/UGen/dfm1.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-Play it with the mouse
-
-> g_01 =
->     let n = pinkNoise 'α' AR * 0.5
->         x = mouseX KR 80 5000 Exponential 0.1
->         y = mouseY KR 0.1 1.2 Linear 0.1
->     in X.dfm1 n x y 1 0 3e-4
-
-Bass...
-
-> g_02 =
->     let i = mix (pulse AR (mce2 100 100.1) 0.5) * 0.4
->         f = range 80 2000 (sinOsc KR (range 0.2 5 (sinOsc KR 0.3 0)) 0)
->     in X.dfm1 i f 1.1 2 0 0.0003 * 0.1
diff --git a/Help/UGen/dgeom.help.lhs b/Help/UGen/dgeom.help.lhs
deleted file mode 100644
--- a/Help/UGen/dgeom.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = dgeom 'α' 15 1 1.2
->         x = mouseX KR 1 40 Exponential 0.1
->         t = impulse KR x 0
->         f = demand t 0 n * 30 + 340
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/dibrown.help.lhs b/Help/UGen/dibrown.help.lhs
deleted file mode 100644
--- a/Help/UGen/dibrown.help.lhs
+++ /dev/null
@@ -1,4 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "Dibrown"
-> Sound.SC3.UGen.DB.ugenSummary "Dibrown"
-
-See dbrown
diff --git a/Help/UGen/difSqr.help.lhs b/Help/UGen/difSqr.help.lhs
deleted file mode 100644
--- a/Help/UGen/difSqr.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let a = fSinOsc AR 800 0
->         b = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0
->     in difSqr a b * 0.125
-
-Written out:
-
-> g_02 =
->     let a = fSinOsc AR 800 0
->         b = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0
->     in (a * a - b * b) * 0.125
diff --git a/Help/UGen/diodeRingMod.help.lhs b/Help/UGen/diodeRingMod.help.lhs
deleted file mode 100644
--- a/Help/UGen/diodeRingMod.help.lhs
+++ /dev/null
@@ -1,48 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> o_01 = sinOsc AR 440 0
-> o_02 = sinOsc AR (xLine KR 1 100 10 DoNothing) 0
-> o_03 = sinOsc AR (xLine KR 200 500 5 DoNothing) 0
-> g_01 = X.diodeRingMod o_01 o_02 * 0.125
-> g_02 = (o_01 * o_02) * 0.125
-> g_03 = X.diodeRingMod o_01 o_03 * 0.125
-> g_04 = (o_01 * o_03) * 0.125
-
-> g_05 =
->   let s1 = sinOsc AR (3700 * mce [1, 1.1, 1.2] * range 1 2 (sinOsc AR 200 0)) 0
->       s2 = sinOsc AR (100 * mce [0.75, 1, 0.5]) 0
->       s3 = X.diodeRingMod s1 s2
->   in mix s3 * lfPulse AR (10.3 * 0.5) 0 0.04 * 0.1
-
-> mf_sin = sinOsc AR
-
-> mf_square f _ = X.blitB3Square AR f 0.99
-
-c_freq = carrier frequency (mf = six-octave range, 2-130 and 60-4000 hz)
-
-lfo_type = LFO signal function, ie. mf_sin or mf_square
-
-lfo_freq = LFO frequency (mf = 0.1 - 25.0 hz)
-
-lfo_amp = the amount that the LFO output sweeps the carrier sin oscillator
-
-drive = pre-multiplier for mod_sig
-
-x_mix = crossfade from unmodulated to modulated audio (-1 to 1)
-
-> mf_ring_mod (lfo_ph,car_ph) car_freq lfo_type lfo_freq lfo_amp drive x_mix mod_sig =
->   let range_2oct = range 0.25 2
->       lfo = range_2oct (lfo_type lfo_freq lfo_ph * lfo_amp)
->       car_sig = sinOsc AR (car_freq * lfo) car_ph
->       mod_sig_post = mod_sig * drive
->   in xFade2 mod_sig_post (X.diodeRingMod car_sig mod_sig_post) x_mix 1
-
-> g_07 =
->   let c_freq = 6.25
->       lfo_freq = 0.1
->       lfo_amp = mouseY KR 0 1 Linear 0.2
->       drive = 1
->       x_mix = mouseX KR (-1) 1 Linear 0.2
->       mod_sig = soundIn 0
->   in mf_ring_mod (0,0) c_freq mf_sin lfo_freq lfo_amp drive x_mix mod_sig
diff --git a/Help/UGen/disintegrator.help.lhs b/Help/UGen/disintegrator.help.lhs
deleted file mode 100644
--- a/Help/UGen/disintegrator.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> gr_01 =
->     let x = mouseX KR 0 1 Linear 0.2
->         y = mouseY KR 0 1 Linear 0.2
->         s = sinOsc AR (mce2 400 404) 0 * 0.2
->     in X.disintegrator 'α' s x y
diff --git a/Help/UGen/diskIn.help.lhs b/Help/UGen/diskIn.help.lhs
deleted file mode 100644
--- a/Help/UGen/diskIn.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> fn_01 = "/home/rohan/data/audio/pf-c5.snd"
-> nc_01 = 1
-> msg_01 = [b_alloc 0 65536 nc_01,b_read 0 fn_01 0 (-1) 0 True]
-> msg_02 = [b_close 0,b_free 0]
-
-allocate buffer and open file for reading
-
-    > withSC3 (mapM_ async msg_01)
-
-> g_01 = diskIn nc_01 0 Loop
-
-close file & free buffer
-
-    > withSC3 (mapM_ async msg_02)
diff --git a/Help/UGen/distort.help.lhs b/Help/UGen/distort.help.lhs
deleted file mode 100644
--- a/Help/UGen/distort.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let e = xLine KR 0.1 10 10 DoNothing
->         o = fSinOsc AR 500 0.0
->     in distort (o * e) * 0.25
diff --git a/Help/UGen/div.help.lhs b/Help/UGen/div.help.lhs
deleted file mode 100644
--- a/Help/UGen/div.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Operator./"
-    :t (/)
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = sinOsc AR 440 0 / 6
-
-Creates a beating effect (subaudio rate).
-
-> g_02 = (pinkNoise 'α' AR / fSinOsc KR 5 0) * 0.1
-
-Optimises identity
-
-> g_04 = sinOsc AR 440 0 / 1 * 0.1
diff --git a/Help/UGen/diwhite.help.lhs b/Help/UGen/diwhite.help.lhs
deleted file mode 100644
--- a/Help/UGen/diwhite.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See dwhite
diff --git a/Help/UGen/done.help.lhs b/Help/UGen/done.help.lhs
deleted file mode 100644
--- a/Help/UGen/done.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let x = mouseX KR (-1) 1 Linear 0.1
->         e = linen x 0.1 0.1 0.5 DoNothing
->         o1 = sinOsc AR 880 0 * 0.1
->         o2 = sinOsc AR 440 0 * e
->     in mce [done e * o1,o2]
diff --git a/Help/UGen/doubleWell3.help.lhs b/Help/UGen/doubleWell3.help.lhs
deleted file mode 100644
--- a/Help/UGen/doubleWell3.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-bass synth
-
-> g_01 =
->   let x = mouseX KR 0 200 Linear 0.2
->       y = mouseY KR 0.5 4.0 Linear 0.2
->       f = sinOsc AR x 0 * y
->   in X.doubleWell3 AR 0 0.01 f 0.25 0 0
-
-gradually changing
-
-> g_02 =
->   let f = lfSaw AR (line KR 10 1000 10 DoNothing) 0
->       delta = line KR 0.0 0.3 20 DoNothing
->   in X.doubleWell3 AR 0 0.05 f delta 0 0
diff --git a/Help/UGen/dpw3Tri.help.lhs b/Help/UGen/dpw3Tri.help.lhs
deleted file mode 100644
--- a/Help/UGen/dpw3Tri.help.lhs
+++ /dev/null
@@ -1,41 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> import qualified Sound.SC3.UGen.Bindings.DB.RDU as RDU {- sc3-rdu -}
-
-distortion creeps in under 200Hz
-
-> g_01 = X.dpw3Tri AR (xLine KR 2000 20 10 DoNothing) * 0.1
-
-very fast sweeps can have transient distortion effects
-
-> g_02 = X.dpw3Tri AR (mouseX KR 200 12000 Exponential 0.2) * 0.2
-
-compare
-
-> g_03 = lfTri AR (mouseX KR 200 12000 Exponential 0.2) 0 * 0.1
-
-less efficient than LFTri
-
-> g_04 = let f = RDU.randN 50 'α' 50 5000
->        in splay (X.dpw3Tri AR f) 1 0.1 0 True
-
-> g_05 = let f = RDU.randN 50 'α' 50 5000
->        in splay (lfTri AR f 0) 1 0.1 0 True
-
-triangle is integration of square wave
-
-> g_06 = let f = mouseX KR 440 8800 Exponential 0.2
->            o = pulse AR f 0.5
->        in integrator o 0.99 * 0.05
-
-differentiation of triangle is square
-
-> g_07 = let f = mouseX KR 440 8800 Exponential 0.2
->            o = X.dpw3Tri AR f
->        in hpz1 (o * 2) * 0.25
-
-compare
-
-> g_08 = let f = mouseX KR 440 8800 Exponential 0.2
->        in pulse AR f 0.5 * 0.1
diff --git a/Help/UGen/dpw4Saw.help.lhs b/Help/UGen/dpw4Saw.help.lhs
deleted file mode 100644
--- a/Help/UGen/dpw4Saw.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> import qualified Sound.SC3.UGen.Bindings.DB.RDU as RDU {- sc3-rdu -}
-
-> g_01 = X.dpw4Saw AR (xLine KR 2000 20 10 DoNothing) * 0.1
-
-> g_02 = X.dpw4Saw AR (mouseX KR 200 12000 Exponential 0.2) * 0.2
-
-> g_03 = saw AR (mouseX KR 200 12000 Exponential 0.2) * 0.1
diff --git a/Help/UGen/drand.help.lhs b/Help/UGen/drand.help.lhs
deleted file mode 100644
--- a/Help/UGen/drand.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = drand 'α' dinf (mce [1, 3, 2, 7, 8])
->         x = mouseX KR 1 400 Exponential 0.1
->         t = impulse KR x 0
->         f = demand t 0 n * 30 + 340
->     in sinOsc AR f 0 * 0.1
-
-> g_02 =
->   let d = drand 'α' dinf
->           (mce [dseq 'β' 1 (mce [2, 0, 2, 0, 1, 0, 1, 1])
->		 ,dseq 'γ' 1 (mce [2, 0, 1, 0, 1, 0, 1, 0])
->		 ,dseq 'δ' 1 (mce [2, 0, 1, 1, 1, 1, 1, 0])
->		 ,dseq 'ε' 1 (mce [2, 0.3, 0.3, 1, 0.3, 0.3, 1, 0.3])
->		 ,dseq 'ζ' 1 (mce [2, 0, 0.3, 0, 0.3, 0, 0.3, 0])
->		 ,dseq 'η' 1 (mce [2, 0, 0, 1, 0, 0, 0, 0])
->		 ,dseq 'θ' 1 (mce [2, 0, 0, 0, 0, 0, 0, 0])
->		 ,dseq 'ι' 1 (mce [0, 1, 0, 1, 0, 1, 0, 1])
->		 ,dseq 'κ' 1 (mce [1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0])])
->       t = impulse AR 10 0
->       x = demand t 0 d * t
->   in decay x 1 * pinkNoise 'λ' AR * 0.1
diff --git a/Help/UGen/dseq.help.lhs b/Help/UGen/dseq.help.lhs
deleted file mode 100644
--- a/Help/UGen/dseq.help.lhs
+++ /dev/null
@@ -1,38 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-At control rate.
-
-> g_01 =
->     let n = dseq 'α' 3 (mce [1,3,2,7,8])
->         x = mouseX KR 1 40 Exponential 0.1
->         t = impulse KR x 0
->         f = demand t 0 n * 30 + 340
->     in sinOsc AR f 0 * 0.1
-
-At audio rate.
-
-> g_02 =
->     let n = dseq 'α' dinf (mce [1,3,2,7,8,32,16,18,12,24])
->         x = mouseX KR 1 10000 Exponential 0.1
->         t = impulse AR x 0
->         f = demand t 0 n * 30 + 340
->     in sinOsc AR f 0 * 0.1
-
-The SC2 Sequencer UGen is somewhat like the sequ function below
-
-> g_03 =
->     let sequ e s tr = demand tr 0 (dseq e dinf (mce s))
->         t = impulse AR 6 0
->         n0 = sequ 'α' [60,62,63,58,48,55] t
->         n1 = sequ 'β' [63,60,48,62,55,58] t
->     in lfSaw AR (midiCPS (mce2 n0 n1)) 0 * 0.1
-
-Rather than MCE expansion at _tr_, it can be clearer to view _tr_ as a
-functor.
-
-> gr_04 =
->     let tr = impulse KR (mce [2,3,5]) 0
->         f (z,t) = demand t 0 (dseq z dinf (mce [60,63,67,69]))
->         m = mce_map_ix f tr
->         o = sinOsc AR (midiCPS m) 0 * 0.1
->     in splay o 1 1 0 True
diff --git a/Help/UGen/dser.help.lhs b/Help/UGen/dser.help.lhs
deleted file mode 100644
--- a/Help/UGen/dser.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let a = dser 'α' 7 (mce [1, 3, 2, 7, 8])
->         x = mouseX KR 1 40 Exponential 0.1
->         t = impulse KR x 0
->         f = demand t 0 a * 30 + 340
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/dseries.help.lhs b/Help/UGen/dseries.help.lhs
deleted file mode 100644
--- a/Help/UGen/dseries.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = dseries 'α' 15 0 1
->         x = mouseX KR 1 40 Exponential 0.1
->         t = impulse KR x 0
->         f = demand t 0 n * 30 + 340
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/dshuf.help.lhs b/Help/UGen/dshuf.help.lhs
deleted file mode 100644
--- a/Help/UGen/dshuf.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.RDU as RDU {- sc3-rdu -}
-
-> g_01 =
->     let a = dseq 'α' dinf (dshuf 'β' 3 (mce [1,3,2,7,8.5]))
->         x = mouseX KR 1 40 Exponential 0.1
->         t = impulse KR x 0
->         f = demand t 0 a * 30 + 340
->     in sinOsc AR f 0 * 0.1
-
-> g_02 =
->     let a = dseq 'α' dinf (dshuf 'β' 5 (RDU.randN 81 'γ' 0 10))
->         x = mouseX KR 1 10000 Exponential 0.1
->         t = impulse AR x 0
->         f = demand t 0 a * 30 + 340
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/dstutter.help.lhs b/Help/UGen/dstutter.help.lhs
deleted file mode 100644
--- a/Help/UGen/dstutter.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-> import Sound.SC3 {- hsc3-}
-
-> g_01 =
->     let inp = dseq 'α' dinf (mce [1,2,3])
->         nse = diwhite 'β' dinf 2 8
->         rep = dstutter 'γ' nse inp
->         trg = impulse KR (mouseX KR 1 40 Exponential 0.2) 0
->         frq = demand trg 0 rep * 30 + 340
->     in sinOsc AR frq 0 * 0.1
-
-see also <https://www.listarc.bham.ac.uk/lists/sc-users/msg14775.html>
-
-> g_02 =
->     let a z = let xr = dxrand z dinf (mce [0.1,0.2,0.3,0.4,0.5])
->                   lf = dstutter z 2 xr
->                   du = duty AR lf 0 DoNothing lf
->                   tr = abs (hpz1 du) >** 0
->                   ph = sweep tr (1/du)
->               in linExp ph 0 1 (rand z 50 100) (rand z 500 2000)
->         f = mce (map a (id_seq 8 'α'))
->         [s0,s1] = mceChannels (splay (sinOsc AR f 0) 1 1 0 True)
->         o = limiter (rotate2 s0 s1 (lfSaw KR 0.1 0)) 1 1e-2
->     in o * 0.25
diff --git a/Help/UGen/dswitch.help.lhs b/Help/UGen/dswitch.help.lhs
deleted file mode 100644
--- a/Help/UGen/dswitch.help.lhs
+++ /dev/null
@@ -1,18 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> mk_g :: UId m => (UGen -> UGen -> m UGen) -> m UGen
-> mk_g sw = do
->   a0 <- dwhiteM 2 3 4
->   a1 <- dwhiteM 2 0 1
->   a2 <- dseqM 2 (mce [1,1,1,0])
->   i <- dseqM 2 (mce [0,1,2,1,0])
->   d <- sw i (mce [a0,a1,a2])
->   let t = impulse KR 4 0
->       f = demand t 0 d * 300 + 400
->   return (sinOsc AR f 0 * 0.1)
-
-compare with dswitch1
-
-> g_01,g_02 :: UId m => m UGen
-> g_01 = mk_g dswitchM
-> g_02 = mk_g dswitch1M
diff --git a/Help/UGen/dswitch1.help.lhs b/Help/UGen/dswitch1.help.lhs
deleted file mode 100644
--- a/Help/UGen/dswitch1.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let x = mouseX KR 0 4 Linear 0.1
->         y = mouseY KR 1 15 Linear 0.1
->         t = impulse KR 3 0
->         w = dwhite 'α' dinf 20 23
->         n = dswitch1 'β' x (mce [1, 3, y, 2, w])
->         f = demand t 0 n * 30 + 340
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/dust.help.lhs b/Help/UGen/dust.help.lhs
deleted file mode 100644
--- a/Help/UGen/dust.help.lhs
+++ /dev/null
@@ -1,22 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = dust 'α' AR 2 * 0.25
-
-> g_02 =
->     let d = xLine KR 20000 2 10 RemoveSynth
->     in dust 'β' AR d * 0.15
-
-Drawings
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plot_ugen1 0.1 (dust 'γ' AR 300)
-    plot_ugen1 0.1 (dust 'γ' AR (xLine KR 5000 100 0.1 RemoveSynth))
-
-![](sw/hsc3/Help/SVG/dust.0.svg)
-![](sw/hsc3/Help/SVG/dust.1.svg)
-
-Illustrate monadic constructor
-
-> g_03,g_04 :: UId m => m UGen
-> g_03 = fmap (* 0.25) (dustM AR 200)
-> g_04 = fmap (* 0.15) (dustM AR (xLine KR 20000 2 10 RemoveSynth))
diff --git a/Help/UGen/dust2.help.lhs b/Help/UGen/dust2.help.lhs
deleted file mode 100644
--- a/Help/UGen/dust2.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = dust2 'α' AR 200 * 0.5
-
-> g_02 =
->     let d = xLine KR 20000 2 10 RemoveSynth
->     in dust2 'β' AR d * 0.15
-
-Drawings
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plot_ugen1 0.1 (dust2 'γ' AR 400)
-    plot_ugen1 0.1 (dust2 'γ' AR (xLine KR 5000 100 0.1 RemoveSynth))
-
-![](sw/hsc3/Help/SVG/dust2.0.svg)
-![](sw/hsc3/Help/SVG/dust2.1.svg)
diff --git a/Help/UGen/duty.help.lhs b/Help/UGen/duty.help.lhs
deleted file mode 100644
--- a/Help/UGen/duty.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 :: UId m => m UGen
-> g_01 = do
->   n0 <- drandM dinf (mce [0.01,0.2,0.4])
->   n1 <- dseqM dinf (mce [204,400,201,502,300,200])
->   let f = duty KR n0 0 RemoveSynth n1
->   return (sinOsc AR (f * mce2 1 1.01) 0 * 0.1)
-
-Using control rate signal, mouseX, to determine duration.
-
-> g_02 =
->     let n = dseq 'α' dinf (mce [204,400,201,502,300,200])
->         x = mouseX KR 0.001 2 Linear 0.1
->         f = duty KR x 0 RemoveSynth n
->     in sinOsc AR (f * mce2 1 1.01) 0 * 0.1
diff --git a/Help/UGen/dwhite.help.lhs b/Help/UGen/dwhite.help.lhs
deleted file mode 100644
--- a/Help/UGen/dwhite.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = dwhite 'α' dinf 0 15 {- Dwhite(0, 15, inf) -}
->         x = mouseX KR 1 40 Exponential 0.1
->         t = impulse KR x 0
->         f = demand t 0 n * 30 + 340
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/dwrand.help.lhs b/Help/UGen/dwrand.help.lhs
deleted file mode 100644
--- a/Help/UGen/dwrand.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = dwrand 'α' dinf (mce [0.3,0.2,0.1,0.2,0.2]) (mce [1,3,2,7,8])
->         x = mouseX KR 1 400 Exponential 0.1
->         t = impulse KR x 0
->         f = demand t 0 n * 30 + 340
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/dxrand.help.lhs b/Help/UGen/dxrand.help.lhs
deleted file mode 100644
--- a/Help/UGen/dxrand.help.lhs
+++ /dev/null
@@ -1,27 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let i = mce [0.2,0.4,dseq 'α' 2 (mce [0.1,0.1])]
->         d = dxrand 'β' dinf i
->     in tDuty AR d 0 DoNothing (dwhite 'γ' dinf 0.5 1) 0
-
-The list inputs to demand rate ugens may operate at different rates.
-The variants i' and i'' below ought to generate the same graph.  A
-simple-minded mce rule sets the rate of the operator primitive to the
-maximum rate of the inputs and then does not revise this after mce
-transformation, where it may be lower.  The hsc3 constructors attempt
-to get this right!
-
-> g_02 =
->     let i = mce [0.2,0.4,dseq 'α' 2 (mce [0.1,0.1])]
->         i' = mceMap (* 0.5) i
->         i'' = i * 0.5
->         d = dxrand 'β' dinf i''
->     in tDuty AR d 0 DoNothing (dwhite 'γ' dinf 0.5 1) 0
-
-> g_03 =
->     let n = dxrand 'α' dinf (mce [1, 3, 2, 7, 8])
->         x = mouseX KR 1 400 Exponential 0.1
->         t = impulse KR x 0
->         f = demand t 0 n * 30 + 340
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/dynKlang.help.lhs b/Help/UGen/dynKlang.help.lhs
deleted file mode 100644
--- a/Help/UGen/dynKlang.help.lhs
+++ /dev/null
@@ -1,33 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-fixed
-
-> g_01 =
->     let s = klangSpec [800,1000,1200] [0.3,0.3,0.3] [pi,pi,pi]
->     in dynKlang AR 1 0 s * 0.4
-
-fixed: randomised
-
-> g_02 =
->     let f = map (\z -> rand z 600 1000) ['a'..'l']
->         s = klangSpec f (replicate 12 1) (replicate 12 0)
->     in dynKlang AR 1 0 s * 0.05
-
-dynamic: frequency modulation
-
-> g_03 =
->     let f = mce3 800 1000 1200 + sinOsc KR (mce3 2 3 4.2) 0 * mce3 13 24 12
->         a = mce3 0.3 0.3 0.3
->         p = mce3 pi pi pi
->     in dynKlang AR 1 0 (klangSpec_mce f a p) * 0.1
-
--- <https://www.listarc.bham.ac.uk/lists/sc-users/msg66911.html>
-
-> f_04 k =
->   let f i = (((fromIntegral i ** range_hs (0.3,0.7) (lag (lfNoise0 i KR 1) 0.1)) + 1) * 99
->             ,max 0 (lfNoise1 i KR (linRand i 0 10 0)))
->       (frq,amp) = unzip (map f [0::Int .. k - 1])
->  	s = dynKlang AR 1 0 (klangSpec frq amp (replicate k 0)) * 0.01
->   in pan2 s 0 1
-
-> g_04 = f_04 16
diff --git a/Help/UGen/dynKlank.help.lhs b/Help/UGen/dynKlank.help.lhs
deleted file mode 100644
--- a/Help/UGen/dynKlank.help.lhs
+++ /dev/null
@@ -1,42 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-    {s=`[[800,1071,1153,1723],nil,[1,1,1,1]]
-    ;DynKlank.ar(,Impulse.ar(2,0,0.1))}.play
-
-> g_01 =
->     let s = klankSpec [800,1071,1153,1723] [1,1,1,1] [1,1,1,1]
->     in dynKlank (impulse AR 2 0 * 0.1) 1 0 1 s
-
-    {s=`[[800,1071,1353,1723],nil,[1,1,1,1]]
-    ;DynKlank.ar(s,Dust.ar(8,0.1))}.play
-
-> g_02 =
->     let s = klankSpec [800,1071,1353,1723] [1,1,1,1] [1,1,1,1]
->     in dynKlank (dust 'α' AR 8 * 0.1) 1 0 1 s
-
-    {s=`[[800,1071,1353,1723],nil,[1,1,1,1]]
-    ;DynKlank.ar(s,PinkNoise.ar(0.007))}.play
-
-> g_03 =
->     let s = klankSpec [800,1071,1353,1723] [1,1,1,1] [1,1,1,1]
->     in dynKlank (pinkNoise 'α' AR * 0.007) 1 0 1 s
-
-    {s=`[[200,671,1153,1723],nil,[1,1,1,1]]
-    ;a=[0.007,0.007]
-    ;DynKlank.ar(s,PinkNoise.ar(a))}.play;
-
-> g_04 =
->     let s = klankSpec [200,671,1153,1723] [1,1,1,1] [1,1,1,1]
->         a = mce2 0.007 0.007
->     in dynKlank (pinkNoise 'α' AR * a) 1 0 1 s
-
-Change frequencies (x) and ring-times (y) with mouse.
-
-> g_05 =
->     let x = mouseX KR 0.5 2 Exponential 0.2
->         f = map (* x) [800,1071,1153,1723]
->         y = mouseY KR 0.1 10 Exponential 0.2
->         d = map (* y) [1,1,1,1]
->         s = klankSpec f [1,1,1,1] d
->         i = impulse AR 2 0 * 0.1
->     in dynKlank i 1 0 1 s
diff --git a/Help/UGen/envADSR.help.lhs b/Help/UGen/envADSR.help.lhs
deleted file mode 100644
--- a/Help/UGen/envADSR.help.lhs
+++ /dev/null
@@ -1,67 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Env.*adsr"
-
-> import Sound.SC3 {- hsc3 -}
-
-{SinOsc.ar * EnvGen.kr(Env.adsr(0.75, 2.75, 0.1, 7.25, 1, -4, 0))}.draw;
-
-> g_01 =
->     let c = control KR "env-gate" 1
->         p = envADSR 0.75 2.75 0.1 7.25 1 (EnvNum (-4)) 0
->         e = envGen KR c 1 0 1 DoNothing p
->     in sinOsc AR 440 0 * e * 0.1
-
-    import Sound.OSC {- hosc -}
-    withSC3 (sendMessage (n_set1 (-1) "env-gate" 0))
-    withSC3 (sendMessage (n_set1 (-1) "env-gate" 1))
-    withSC3 (sendMessage (n_free [-1]))
-
-> e_01 =
->     [envADSR 0.75 0.75 0.5 0.75 1 (EnvNum (-4)) 0
->     ,envADSR 0.02 0.2 0.25 1 1 (EnvNum (-4)) 0
->     ,envADSR 0.001 0.2 0.25 1 1 (EnvNum (-4)) 0
->     ,envADSR 0 2 1 0.1 0.5 EnvSin 0
->     ,envADSR 0.001 1.54 1 0.001 0.4 EnvSin 0]
-
-    import Sound.SC3.Plot {- hsc3 -}
-    plotEnvelope e_01
-
-There is a record variant:
-
-> g_02 =
->     let g = control KR "gate" 1
->         c = EnvNum (-4)
->         r = ADSR {adsr_attackTime = 0.75
->                  ,adsr_decayTime = 0.75
->                  ,adsr_sustainLevel = 0.5
->                  ,adsr_releaseTime = 0.75
->                  ,adsr_peakLevel = 1
->                  ,adsr_curve = (c,c,c)
->                  ,adsr_bias = 0}
->         p = envADSR_r r
->         e = envGen KR g 0.1 0 1 DoNothing p
->     in sinOsc AR 440 0 * e
-
-    withSC3 (sendMessage (n_set1 (-1) "gate" 0))
-    withSC3 (sendMessage (n_set1 (-1) "gate" 1))
-    withSC3 (sendMessage (n_free [-1]))
-
-SC3 comparison:
-
-Env.adsr.asArray == [0,3,2,-99,1,0.01,5,-4,0.5,0.3,5,-4,0,1,5,-4];
-
-> r_03 = [0,3,2,-99,1,0.01,5,-4,0.5,0.3,5,-4,0,1,5,-4]
-> e_03 = envADSR 0.01 0.3 0.5 1 1 (EnvNum (-4)) 0
-> a_03 = envelope_sc3_array e_03
-
-    e_03 == envADSR_r adsrDefault
-    a_03 == Just r_03
-
-> r_04 = [0,3,2,-99,1,0.3,5,-4,0.1,0.4,5,-4,0,1.2,5,-4]
-> e_04 = envADSR 0.3 0.4 0.1 1.2 1 (EnvNum (-4)) 0
-> a_04 = envelope_sc3_array e_04
-
-    a_04 == Just r_04
-
-x = {|gate=0, freq=440 | EnvGen.kr(Env.adsr,gate) * SinOsc.ar(freq,0) * 0.1}.play
-x.set(\gate,1);
-x.set(\gate,0);
diff --git a/Help/UGen/envASR.help.lhs b/Help/UGen/envASR.help.lhs
deleted file mode 100644
--- a/Help/UGen/envASR.help.lhs
+++ /dev/null
@@ -1,30 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Env.*asr"
-    :i Sound.SC3.ASR
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let g = control KR "env-gate" 1
->         p = envASR 0.01 1 1 (EnvNum (-4))
->         e = envGen KR g 0.1 0 1 RemoveSynth p
->     in sinOsc AR 440 0 * e
-
-    import Sound.OSC {- hosc -}
-    withSC3 (sendMessage (n_set1 (-1) "env-gate" 0))
-
-> e_01 =
->     [envASR 0.1 1 1 (EnvNum (-4))
->     ,envASR 0.3 0.25 1 EnvSin
->     ,envASR 0.01 0.5 1.25 EnvLin]
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plotEnvelope e_01
-
-An envelope with a long release time that mostly sustains and then decays quickly
-
-> e_02 = envASR_c 0.01 1 0.75 (EnvNum (-4),EnvNum 4)
-> e_03 = envASR_c 0.15 1 1.25 (EnvNum (-4),EnvNum (-4))
-> e_04 = envASR_c 0.15 1 1.25 (EnvNum (-4),EnvNum 64)
-
-    plotEnvelope [e_02,e_03,e_04]
-
diff --git a/Help/UGen/envCoord.help.lhs b/Help/UGen/envCoord.help.lhs
deleted file mode 100644
--- a/Help/UGen/envCoord.help.lhs
+++ /dev/null
@@ -1,51 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-co-ordinate (break-point) envelope
-
-> g_01 =
->     let c = EnvLin
->         p = envCoord [(0,0),(0.5,0.1),(0.55,1),(1,0)] 9 0.1 c
->         e = envGen KR 1 1 0 1 RemoveSynth p
->     in sinOsc AR 440 0 * e
-
-line segments, set target value & transition time and trigger
-
-> g_02 =
->     let tr = tr_control "tr" 1
->         st = control KR "st" 440
->         en = control KR "en" 880
->         tm = control KR "tm" 2
->         p = envCoord [(0,st),(tm,en)] 1 1 EnvLin
->         e = envGen KR tr 1 0 1 DoNothing p
->     in sinOsc AR e 0 * 0.2
-
-    import Sound.OSC {- hosc3 -}
-    withSC3 (sendMessage (n_set (-1) [("en",550),("tm",4),("tr",1)]))
-    withSC3 (sendMessage (n_set (-1) [("en",990),("tm",1),("tr",1)]))
-    withSC3 (sendMessage (n_set (-1) [("en",110),("tm",2),("tr",1)]))
-
-likewise, but internal graph triggers and randomises line end points
-
-> g_03 =
->     let tr = dust 'α' KR 2
->         st = 440
->         en = tRand 'β' 300 900 tr
->         tm = tRand 'γ' 0.5 1.5 tr
->         p = envCoord [(0,st),(tm,en)] 1 1 EnvLin
->         e = envGen KR tr 1 0 1 DoNothing p
->     in sinOsc AR e 0 * 0.2
-
-plotting
-
-> e_01 =
->     let c0 = [(0,0),(0.35,0.1),(0.55,1),(1,0)]
->         c1 = [(0,0),(0.15,0.6),(0.35,0.2),(1,0)]
->         c2 = [(0,0),(0.65,0.3),(0.85,0.7),(1,0)]
->         c3 = [(0,0.1),(0.25,0.6),(0.5,0.4),(1,0.4)]
->     in [envCoord c0 9 0.1 EnvLin
->        ,envCoord c1 6 0.1 EnvSin
->        ,envCoord c2 5 0.1 EnvCub
->        ,envCoord c3 7 0.1 EnvStep]
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plotEnvelope e_01
diff --git a/Help/UGen/envDetect.help.lhs b/Help/UGen/envDetect.help.lhs
deleted file mode 100644
--- a/Help/UGen/envDetect.help.lhs
+++ /dev/null
@@ -1,11 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->     let i = soundIn 0
->         c = X.envDetect AR i 0.01 0.1
->         p = pitch i 440 60 4000 100 16 1 0.01 0.5 1 0
->         f = mceChannel 0 p * 3
->         e = lagUD (mceChannel 1 p) 0 0.1
->         o = pinkNoise 'α' AR * c + sinOsc AR f 0 * c * e
->     in mce2 i o
diff --git a/Help/UGen/envFollow.help.lhs b/Help/UGen/envFollow.help.lhs
deleted file mode 100644
--- a/Help/UGen/envFollow.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->     let z = soundIn 0
->         d = mouseX KR 0.990 0.999 Linear 0.2
->         c = X.envFollow KR z d
->         o = pinkNoise 'α' AR * c
->     in mce2 z o
diff --git a/Help/UGen/envGate.help.lhs b/Help/UGen/envGate.help.lhs
deleted file mode 100644
--- a/Help/UGen/envGate.help.lhs
+++ /dev/null
@@ -1,32 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Make envGate, giving the /default/ arguments, as used by envGate_def.
-
-> g_01 =
->     let k = control KR
->         e = envGate 1 (k "gate" 1) (k "fadeTime" 0.02) RemoveSynth EnvSin
->     in lpf (saw AR 200) 600 * 0.1 * e
-
-Set fade time, then release gate.
-
-    import Sound.OSC {- hosc -}
-    withSC3 (sendMessage (n_set1 (-1) "fadeTime" 2))
-    withSC3 (sendMessage (n_set1 (-1) "gate" 0))
-
-The same, but built in defaults.
-
-> g_02 =
->     let e = envGate_def
->     in lpf (saw AR 200) 600 * 0.1 * e
-
-Several envGate nodes can coexist in one synth, but if they are the
-same they're shared (as ever).
-
-> g_03 =
->     let e = envGate_def
->         s1 = lpf (saw AR 80) 600 * e
->         s2 = rlpf (saw AR 200 * 0.5) (6000 * e + 60) 0.1 * e
->     in mce2 s1 s2 * 0.1
-
-    withSC3 (sendMessage (n_set1 (-1) "fadeTime" 5))
-    withSC3 (sendMessage (n_set1 (-1) "gate" 0))
diff --git a/Help/UGen/envGen.help.lhs b/Help/UGen/envGen.help.lhs
deleted file mode 100644
--- a/Help/UGen/envGen.help.lhs
+++ /dev/null
@@ -1,76 +0,0 @@
-See also help files for the following envelope constructors:
-
-- envADSR
-- envASR
-- envCoord
-- envGate
-- envLinen
-- envPairs
-- envPerc
-- envSine
-- envStep
-- envTrapezoid
-- envTriangle
-- envXYC
-
-> import Sound.SC3 {- hsc3 -}
-
-env_circle joins the end of the envelope to the start
-
-> e_01 :: Fractional n => Envelope n
-> e_01 = envelope [6000,700,100] [1,1] [EnvExp,EnvLin]
-> a_01 = envelope_sc3_array e_01
-
-    > a_01 == Just [6000,2,-99,-99,700,1,2,0,100,1,1,0]
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plotEnvelope [e_01]
-
-{var e = Env([6000,700,100],[1,1],['exp','lin'])
-;var e_c = Env([6000,700,100],[1,1],['exp','lin']).circle(1,\lin)
-;e.asArray.postln
-;e_c.asArray.postln
-;SinOsc.ar(e_c.kr,0) * 0.1}.draw
-
-> e_01_c :: Fractional t => Envelope t
-> e_01_c = env_circle_z 0 1 EnvLin e_01
-> a_01_c = envelope_sc3_array e_01_c
-
-    > a_01_c == Just [0,4,3,0,6000,0,1,0,700,1,2,0,100,1,1,0,0,1,1,0]
-    > plotEnvelope [e_01_c]
-
-> g_01 =
->     let f = envGen KR 1 1 0 1 DoNothing e_01_c
->     in sinOsc AR f 0 * 0.1 + impulse AR 1 0
-
-<https://www.listarc.bham.ac.uk/lists/sc-users/msg14815.html>
-
-> e_02 =
->   let n = range 0.01 0.15 (lfNoise1 'α' KR 2)
->   in Envelope [0,1] [n] [EnvLin] Nothing (Just 0) 0
-
-> e_02_c = env_circle_0 e_02
-
-> g_02 =
->     let a = envGen AR 1 1 0 1 DoNothing e_02_c
->     in sinOsc AR (a * 400 + 500) 0 * 0.1
-
-EnvGen used as non-linear Phasor, here the positive half of a sin
-function is traversed more quickly than the negative half.
-
-> e_03 :: (Floating n,Ord n) => Envelope n
-> e_03 = envXYC [(0,0,EnvNum (-0.5)),(0.4,pi,EnvNum 0.5),(1,two_pi,EnvLin)]
-> e_03_c = env_circle_0 e_03
-
-    plotEnvelope [e_03]
-
-> f_03 rt ts = sinOsc rt 0 (envGen rt 1 1 0 ts DoNothing e_03_c)
-> g_03 = soundIn 0 * range 0.25 1 (f_03 KR 2)
-
-   plot_ugen 0.1 (f_03 AR 0.1)
-
-Env([0,1],[0.1]).asArray == [0,1,-99,-99,1,0.1,1,0]
-
-> e_04 = envelope [0,1] [0.1] [EnvLin]
-> a_04 = envelope_sc3_array e_04
-
-    a_04 == Just [0,1,-99,-99,1,0.1,1,0]
diff --git a/Help/UGen/envLinen.help.lhs b/Help/UGen/envLinen.help.lhs
deleted file mode 100644
--- a/Help/UGen/envLinen.help.lhs
+++ /dev/null
@@ -1,33 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Env.*linen"
-    :i Sound.SC3.LINEN
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let t = envLinen 0.4 2 0.4 0.1
->         e = envGen KR 1 1 0 1 RemoveSynth t
->     in sinOsc AR 440 0 * e
-
-> e_01 =
->     [envLinen 0 1 0 0.4
->     ,envelope_normalise (envLinen 0 2 0 0.5)
->     ,envLinen 0.4 2 0.4 0.6
->     ,envLinen 0.6 1 1.2 0.7]
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plotEnvelope e_01
-
-Language access
-
-> e_02 =
->     let e = envLinen 0 1 0 1
->     in (envelope_duration e
->        ,envelope_segment_ix e 0
->        ,envelope_segment_ix e 1
->        ,envelope_segment e 0
->        ,envelope_segment e 1
->        ,envelope_at e 0
->        ,envelope_at e 1
->        ,envelope_render 10 e)
-
-    print e_02
diff --git a/Help/UGen/envPairs.help.lhs b/Help/UGen/envPairs.help.lhs
deleted file mode 100644
--- a/Help/UGen/envPairs.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-    Sound.SC3.Lang.Help.viewSC3Help "Env.*pairs"
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let c = EnvLin
->         p = envPairs [(0,0),(5,0.01),(5.5,0.1),(10,0)] c
->         e = envGen KR 1 1 0 1 RemoveSynth p
->     in sinOsc AR 440 0 * e
diff --git a/Help/UGen/envPerc.help.lhs b/Help/UGen/envPerc.help.lhs
deleted file mode 100644
--- a/Help/UGen/envPerc.help.lhs
+++ /dev/null
@@ -1,20 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Env.*perc"
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let a = 0.1
->         p = envPerc 0.01 1
->         e = envGen KR 1 a 0 1 RemoveSynth p
->     in sinOsc AR 440 0 * e
-
-> g_02 =
->     let a = 0.1
->         c = EnvNum (-4)
->         p = envPerc' 0.01 1 a (c,c)
->         e = envGen KR 1 1 0 1 RemoveSynth p
->     in sinOsc AR 440 0 * e
-
-
-import Sound.SC3.Plot {- hsc3-plot -}
-plotEnvelope [envPerc 0.05 1,envPerc 0.2 0.75]
diff --git a/Help/UGen/envSine.help.lhs b/Help/UGen/envSine.help.lhs
deleted file mode 100644
--- a/Help/UGen/envSine.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Env.*sine"
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let s = envSine 9 0.1
->         e = envGen KR 1 1 0 1 RemoveSynth s
->     in sinOsc AR 440 0 * e
-
-> e_01 = [envSine 9 1,envSine 3 0.25]
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plotEnvelope e_01
diff --git a/Help/UGen/envStep.help.lhs b/Help/UGen/envStep.help.lhs
deleted file mode 100644
--- a/Help/UGen/envStep.help.lhs
+++ /dev/null
@@ -1,22 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Env.*step"
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let env = envStep [0.0,0.5,0.7,1.0,0.9,0.0] [0.5,0.1,0.2,1.0,1.5,3] Nothing Nothing
->         envgen = envGen AR 1 1 0 1 RemoveSynth env
->     in sinOsc AR (envgen * 1000 + 440) 0 * (envgen + 1) * 0.1
-
-major scale, accelerating, with loop & release nodes
-
-> g_02 =
->     let env = envStep [0,2,4,5,7,9,11,12,0] (take 9 (iterate (* 0.75) 1)) (Just 8) (Just 0)
->         envgen = envGen AR 1 1 0 1 DoNothing env
->     in sinOsc AR (midiCPS (envgen + 60)) 0 * 0.1
-
-draw envelope
-
-> e_01 = [envStep [0,2,4,5,7,9,11,12] (take 8 (iterate (* 0.75) 1)) Nothing Nothing]
-
-    import Sound.SC3.Plot
-    plotEnvelope e_01
diff --git a/Help/UGen/envTrapezoid.help.lhs b/Help/UGen/envTrapezoid.help.lhs
deleted file mode 100644
--- a/Help/UGen/envTrapezoid.help.lhs
+++ /dev/null
@@ -1,18 +0,0 @@
-> import Sound.SC3
-
-> g_01 =
->     let t = envTrapezoid 0.05 0.95 3 0.1
->         e = envGen KR 1 1 0 1 RemoveSynth t
->     in sinOsc AR 440 0 * e
-
-> e_02 = envTrapezoid 0 0.25 2 0.1 :: Envelope Double
-> r_02 = [0,3,-99,-99,0.1,0.5,1,0,0.1,0,1,0,0,1.5,1,0]
-> a_02 = envelope_sc3_array e_02
-
-     a_02 == Just r_02
-
-> e_03 :: [Envelope Double]
-> e_03 = [envTrapezoid 0.75 0.25 2 1,envTrapezoid 0.25 0.75 3 0.5]
-
-    import Sound.SC3.Plot
-    plotEnvelope e_03
diff --git a/Help/UGen/envTriangle.help.lhs b/Help/UGen/envTriangle.help.lhs
deleted file mode 100644
--- a/Help/UGen/envTriangle.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Env.*triangle"
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let t = envTriangle 1 0.1
->         e = envGen KR 1 1 0 1 RemoveSynth t
->     in sinOsc AR 440 0 * e
-
-> e_02 = [envTriangle 1 1,envTriangle 0.25 0.5]
-
-    import Sound.SC3.Plot
-    plotEnvelope e_02
diff --git a/Help/UGen/envXYC.help.lhs b/Help/UGen/envXYC.help.lhs
deleted file mode 100644
--- a/Help/UGen/envXYC.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Env.*xyc"
-
-> import Sound.SC3 {- hsc3 -}
-
-> e_01 :: (Fractional n,Ord n) => Envelope n
-> e_01 = envXYC [(0, 330, EnvExp), (0.5, 440, EnvExp), (1.0, 1760, EnvLin)]
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plotEnvelope [e_01]
diff --git a/Help/UGen/eq.help.lhs b/Help/UGen/eq.help.lhs
deleted file mode 100644
--- a/Help/UGen/eq.help.lhs
+++ /dev/null
@@ -1,2 +0,0 @@
-See gt (>)
-
diff --git a/Help/UGen/equal_to.help.lhs b/Help/UGen/equal_to.help.lhs
deleted file mode 100644
--- a/Help/UGen/equal_to.help.lhs
+++ /dev/null
@@ -1,18 +0,0 @@
-The star suffixes (==**,/=**,<**,<=**,>**,>=**) are because the result of the
-operators is not of type Bool, as is required by the signature for the
-classes Eq and Ord.
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let o = sinOsc KR 1 0
->         t = [o >** 0
->             ,o >=** 0
->             ,o <** 0
->             ,o <=** 0
->             ,o ==** 0
->             ,(o <** 0.001) * (o >** (-0.001))]
->         f = [220, 330, 440, 550, 660, 770]
->         p = envPerc 0.01 1
->         e = envGen KR (mce t) 0.1 0 1 DoNothing p
->     in mix (sinOsc AR (mce f) 0 * e)
diff --git a/Help/UGen/excess.help.lhs b/Help/UGen/excess.help.lhs
deleted file mode 100644
--- a/Help/UGen/excess.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let o = fSinOsc AR 1000 0
->         l = line KR 0 1 8 DoNothing
->     in excess o l * 0.1
-
-or written out in terms of clip2
-
-> g_02 =
->     let o = fSinOsc AR 1000 0
->         l = line KR 0 1 8 DoNothing
->     in (o - clip2 o l) * 0.1
diff --git a/Help/UGen/expRand.help.lhs b/Help/UGen/expRand.help.lhs
deleted file mode 100644
--- a/Help/UGen/expRand.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let a = line KR 0.5 0 0.01 RemoveSynth
->         f = expRand 'α' 100.0 8000.0
->     in fSinOsc AR f 0 * a
diff --git a/Help/UGen/fSinOsc.help.lhs b/Help/UGen/fSinOsc.help.lhs
deleted file mode 100644
--- a/Help/UGen/fSinOsc.help.lhs
+++ /dev/null
@@ -1,41 +0,0 @@
-Note: SC2 did not have the initial phase argument.
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = fSinOsc AR (mce2 440 550) 0 * 0.05
-
-Modulate frequency
-
-> g_02 = fSinOsc AR (xLine KR 200 4000 1 RemoveSynth) 0 * 0.1
-
-Loses amplitude towards the end
-
-> g_03 =
->     let f = fSinOsc AR (xLine KR 4 401 8 RemoveSynth)
->     in fSinOsc AR (f 0 * 200 + 800) 0 * 0.1
-
-sin grain with sine envelope (see also 'sine_grain_ugen_graph')
-
-> sine =
->     let b = control IR "out" 0
->         f = control IR "freq" 440
->         d = control IR "dur" 0.2
->         a = control IR "amp" 0.1
->         p = control IR "pan" 0
->         o = fSinOsc AR f 0
->         s = envSine d a
->         e = envGen AR 1 1 0 1 RemoveSynth s
->         u = offsetOut b (pan2 o p e)
->     in synthdef "sine" u
-
-    > import Sound.SC3.Lang.Pattern {- hsc3-lang -}
-
-granular synthesis
-
-    > paudition (pbind [(K_instr,psynth sine)
-    >                  ,(K_midinote,fmap roundE (pbrown 'α' 72 84 1 inf))
-    >                  ,(K_detune,pwhite 'β' 0 10 inf)
-    >                  ,(K_dur,pbrown 'γ' 0.005 0.15 0.05 inf)
-    >                  ,(K_legato,pbrown 'δ' 1 2 0.1 inf)
-    >                  ,(K_amp,pbrown 'ε' 0.05 0.25 0.05 inf)
-    >                  ,(K_param "pan",pbrown 'ζ' (-1) 1 0.2 inf)])
diff --git a/Help/UGen/fbSineC.help.lhs b/Help/UGen/fbSineC.help.lhs
deleted file mode 100644
--- a/Help/UGen/fbSineC.help.lhs
+++ /dev/null
@@ -1,42 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.Common.Math.Noise {- hsc3 -}
-
-SC3 default values.
-
-> g_00 = fbSineC AR (sampleRate / 2) 1 0.1 1.1 0.5 0.1 0.1 * 0.2
-
-FB generating noise
-
-> g_01 = fbSineC AR (sampleRate / 2) 1 4 1.1 0.5 0.1 0.1 * 0.2
-
-Increase feedback
-
-> g_02 =
->     let fb = line KR 0.01 4 10 DoNothing
->     in fbSineC AR sampleRate 1 fb 1.1 0.5 0.1 0.1 * 0.2
-
-Increase phase multiplier
-
-> g_03 =
->     let a = line KR 1 2 10 DoNothing
->     in fbSineC AR sampleRate 1 0 a 0.5 0.1 0.1 * 0.2
-
-Randomly modulate parameters
-
-> g_04 =
->     let x = mouseX KR 1 12 Linear 0.1
->         n e = lfNoise2 e KR x
->         n0 = n 'α' * 1e4 + 1e4
->         n1 = n 'β' * 32 + 33
->         n2 = n 'γ' * 0.5
->         n3 = n 'δ' * 0.05 + 1.05
->         n4 = n 'ε' * 0.3 + 0.3
->     in fbSineC AR n0 n1 n2 n3 n4 0.1 0.1 * 0.2
-
-Haskell implementation of equation.
-
-> fbSineC_hs im fb a c = map fst (iterate (fbSine_f im fb a c) (0.1,0.1))
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plotTable1 (take 600 (fbSineC_hs 1.0 4.0 1.1 0.5))
-    plot_ugen_nrt (600,1) 1.0 (fbSineC AR 600 1.0 4.0 1.1 0.5 0.1 0.1)
diff --git a/Help/UGen/fbSineL.help.lhs b/Help/UGen/fbSineL.help.lhs
deleted file mode 100644
--- a/Help/UGen/fbSineL.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See fbSineC
diff --git a/Help/UGen/fbSineN.help.lhs b/Help/UGen/fbSineN.help.lhs
deleted file mode 100644
--- a/Help/UGen/fbSineN.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See fbSineC
diff --git a/Help/UGen/fdiv.help.lhs b/Help/UGen/fdiv.help.lhs
deleted file mode 100644
--- a/Help/UGen/fdiv.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let o = fSinOsc KR 10 0.5
->         n = pinkNoise 'α' AR
->     in (n * 0.1) / (o * 0.75)
diff --git a/Help/UGen/fft.help.lhs b/Help/UGen/fft.help.lhs
deleted file mode 100644
--- a/Help/UGen/fft.help.lhs
+++ /dev/null
@@ -1,21 +0,0 @@
-    :t fft'
-
-> import Sound.SC3 {- hsc3 -}
-
-Non-local buffer
-
-    withSC3 (async (b_alloc 10 2048 1))
-
-Variants with default values
-
-> gr_01 =
->     let n = whiteNoise 'α' AR
->     in ifft' (fft' 10 (n * 0.05))
-
-Local buffer allocating fft variant
-
-> gr_02 =
->     let s0 = sinOsc KR 0.08 0 * 6 + 6.2
->         s1 = sinOsc KR (squared s0) 0 * 100 + 800
->         s2 = sinOsc AR s1 0
->     in ifft (ffta 'α' 2048 s2 0.5 0 1 0) 0 0 * 0.25
diff --git a/Help/UGen/fftTrigger.help.lhs b/Help/UGen/fftTrigger.help.lhs
deleted file mode 100644
--- a/Help/UGen/fftTrigger.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See example at packFFT
diff --git a/Help/UGen/fm7.help.lhs b/Help/UGen/fm7.help.lhs
deleted file mode 100644
--- a/Help/UGen/fm7.help.lhs
+++ /dev/null
@@ -1,84 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.Composite.External as X {- hsc3 -}
-
-two of six...
-
-> gr_01 =
->     let c = [[xLine KR 300 310 4 DoNothing,0,1]
->             ,[xLine KR 300 310 8 DoNothing,0,1]
->             ,[0,0,1]
->             ,[0,0,1]
->             ,[0,0,1]
->             ,[0,0,1] ]
->         m = [[line KR 0 0.001 2 DoNothing,line KR 0.1 0 4 DoNothing,0,0,0,0]
->             ,[line KR 0 6 1 DoNothing,0,0,0,0,0]
->             ,[0,0,0,0,0,0]
->             ,[0,0,0,0,0,0]
->             ,[0,0,0,0,0,0]
->             ,[0,0,0,0,0,0] ]
->         [l,r,_,_,_,_] = mceChannels (X.fm7_mx c m)
->     in mce2 l r * 0.1
-
-An algorithmically generated graph courtesy f0.
-
-> gr_02 =
->     let x = [[[0.0,-1/3,-1.0,0.0]
->              ,[0.75,0.75,0.0,-0.5]
->              ,[-0.5,-0.25,0.25,-0.75]
->              ,[-0.5,1.0,1.0,1.0]
->              ,[0.0,1/6,-0.75,-1.0]
->              ,[0.5,0.5,-0.5,1/3]]
->             ,[[-1/3,0.5,-0.5,-0.5]
->              ,[0.5,0.75,0.25,0.75]
->              ,[-15/18,0.25,-1.0,0.5]
->              ,[1.5,0.25,0.25,-0.25]
->              ,[-2/3,-2/3,-1.0,-0.5]
->              ,[-1.0,0.0,-15/18,-1/3]]
->             ,[[0.25,-0.5,-0.5,-1.0]
->              ,[-0.5,1.0,-1.5,0.0]
->              ,[-1.0,-1.5,-0.5,0.0]
->              ,[0.5,-1.0,7/6,-0.5]
->              ,[15/18,-0.75,-1.5,0.5]
->              ,[0.25,-1.0,0.5,1.0]]
->             ,[[1.0,1/3,0.0,-0.75]
->              ,[-0.25,0.0,0.0,-0.5]
->              ,[-0.5,-0.5,0.0,0.5]
->              ,[1.0,0.75,0.5,0.5]
->              ,[0.0,1.5,-0.5,0.0]
->              ,[1.0,0.0,-0.25,-0.5]]
->             ,[[0.5,-0.25,0.0,1/3]
->              ,[0.25,-0.75,1/3,-1.0]
->              ,[-0.25,-0.5,0.25,-7/6]
->              ,[0.0,0.25,0.5,1/6]
->              ,[-1.0,-0.5,15/18,-0.5]
->              ,[15/18,-0.75,-0.5,0.0]]
->             ,[[0.0,-0.75,-1/6,0.0]
->              ,[1.0,0.5,0.5,0.0]
->              ,[-0.5,0.0,-0.5,0.0]
->              ,[-0.5,-1/6,0.0,0.5]
->              ,[-0.25,1/6,-0.75,0.25]
->              ,[-7/6,-4/3,-1/6,1.5]]]
->         y = [[[0.0,-0.5,1.0,0.0]
->              ,[-0.5,1.0,0.5,-0.5]
->              ,[0.0,1/3,1.0,1.0]]
->             ,[[-0.5,0.5,1.0,1.0]
->              ,[0.0,1/3,0.0,1.5]
->              ,[-0.5,15/18,1.0,0.0]]
->             ,[[0.25,-2/3,0.25,0.0]
->              ,[0.5,-0.5,-0.5,-0.5]
->              ,[0.5,-0.5,-0.75,15/18]]
->             ,[[-0.25,1.0,0.0,1/3]
->              ,[-1.25,-0.25,0.5,0.0]
->              ,[0.0,-1.25,-0.25,-0.5]]
->             ,[[0.75,-0.25,1.5,0.0]
->              ,[0.25,-1.5,0.5,0.5]
->              ,[-0.5,-0.5,-0.5,-0.25]]
->             ,[[0.0,0.5,-0.5,0.25]
->              ,[0.25,0.5,-1/3,0.0]
->              ,[1.0,0.5,-1/6,0.5]]]
->         cs = map (map (\[f,p,m,a] -> sinOsc AR f p * m + a)) x
->         ms = map (map (\[f,w,m,a] -> pulse AR f w * m + a)) y
->         [c1,c2,c3,c4,c5,c6] = mceChannels (X.fm7_mx cs ms)
->         g3 = linLin (lfSaw KR 0.1 0) (-1) 1 0 (dbAmp (-12))
->         g6 = dbAmp (-3)
->     in mce [c1 + c3 * g3 + c5,c2 + c4 + c6 * g6]
diff --git a/Help/UGen/fmGrain.help.lhs b/Help/UGen/fmGrain.help.lhs
deleted file mode 100644
--- a/Help/UGen/fmGrain.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}
-
-> g_01 =
->     let t = impulse AR 20 0
->         n = linLin (lfNoise1 'α' KR 1) (-1) 1 1 10
->         s = envSine 9 0.1
->         e = envGen KR 1 1 0 1 RemoveSynth s
->     in fmGrain t 0.2 440 220 n * e
diff --git a/Help/UGen/fmGrainB.help.lhs b/Help/UGen/fmGrainB.help.lhs
deleted file mode 100644
--- a/Help/UGen/fmGrainB.help.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> m_01 =
->   [b_alloc 10 512 1
->   ,b_gen_sine2 10 [Normalise,Wavetable,Clear] [(0.5,0.1)]]
-
-    withSC3 (mapM_ maybe_async m_01)
-
-> g_01 =
->   let t = impulse AR 20 0
->       n = linLin (lfNoise1 'α' KR 1) (-1) 1 1 10
->       s = envSine 9 0.1
->       e = envGen KR 1 1 0 1 RemoveSynth s
->   in X.fmGrainB t 0.2 440 220 n 10 * e
diff --git a/Help/UGen/fold2.help.lhs b/Help/UGen/fold2.help.lhs
deleted file mode 100644
--- a/Help/UGen/fold2.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let o = fSinOsc AR 1000 0
->         l = line KR 0 1 8 DoNothing
->     in fold2 o l
diff --git a/Help/UGen/formant.help.lhs b/Help/UGen/formant.help.lhs
deleted file mode 100644
--- a/Help/UGen/formant.help.lhs
+++ /dev/null
@@ -1,22 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Default values
-
-> g_00 = formant AR 440 1760 880 * 0.125
-
-Modulate fundamental frequency, formant frequency stays constant.
-
-> g_01 = formant AR (xLine KR 400 1000 8 RemoveSynth) 2000 800 * 0.125
-
-Modulate formant frequency, fundamental frequency stays constant.
-
-> g_02 =
->     let f = mce [200, 300, 400, 500]
->         ff = xLine KR 400 4000 8 RemoveSynth
->     in formant AR f ff 200 * 0.125
-
-Modulate width frequency, other frequencies stay constant.
-
-> g_03 =
->     let bw = xLine KR 800 8000 8 RemoveSynth
->     in formant AR 400 2000 bw * 0.1
diff --git a/Help/UGen/formlet.help.lhs b/Help/UGen/formlet.help.lhs
deleted file mode 100644
--- a/Help/UGen/formlet.help.lhs
+++ /dev/null
@@ -1,31 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = formlet (impulse AR 20 0.5) 1000 0.01 0.1
-
-> g_02 =
->     let f = xLine KR 10 400 8 RemoveSynth
->     in formlet (blip AR f 1000 * 0.1) 1000 0.01 0.1
-
-Modulating formant frequency.
-
-> g_03 =
->     let s = blip AR (sinOsc KR 5 0 * 20 + 300) 1000 * 0.1
->         ff = xLine KR 1500 700 8 RemoveSynth
->     in formlet s ff 0.005 0.04
-
-Mouse control of frequency and decay time.
-
-> g_04 =
->     let s = blip AR (sinOsc KR 5 0 * 20 + 300) 1000 * 0.1
->         x = mouseX KR 0.01 0.2 Exponential 0.2
->         y = mouseY KR 700 2000 Exponential 0.2
->     in formlet s y 0.005 x
-
-and again (control-rate)...
-
-> g_05 =
->     let s = dust 'α' KR (mce2 10 11)
->         x = mouseX KR 0.1 2 Exponential 0.2
->         y = mouseY KR 7 200 Exponential 0.2
->         f = formlet s y 0.005 x
->     in k2a f + sinOsc AR (f * 200 + mce2 500 600 - 100) 0 * 0.2
diff --git a/Help/UGen/fos.help.lhs b/Help/UGen/fos.help.lhs
deleted file mode 100644
--- a/Help/UGen/fos.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "FOS"
-> Sound.SC3.UGen.DB.ugenSummary "FOS"
-
-> import Sound.SC3
-
-Same as OnePole.
-
-> let x = lfTri AR 0.4 0 * 0.99
-> in audition (out 0 (fos (lfSaw AR 200 0 * 0.2) (1 - (abs x)) 0 x))
-
-Same as OneZero
-
-> let x = lfTri AR 0.4 0 * 0.99
-> in audition (out 0 (fos (lfSaw AR 200 0 * 0.2) (1 - (abs x)) x 0))
diff --git a/Help/UGen/free.help.lhs b/Help/UGen/free.help.lhs
deleted file mode 100644
--- a/Help/UGen/free.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = out 0 (sinOsc AR 880 0 * 0.1)
-
-> g_02 =
->     let n0 = pinkNoise 'α' AR
->         n1 = dust 'β' KR 20
->     in mrg [out 1 (n0 * 0.1), free n1 1001]
-
-    > audition_at (1001,AddToTail,1,[]) g_01
-    > audition_at (-1,AddToTail,1,[]) g_02
-
diff --git a/Help/UGen/freeSelf.help.lhs b/Help/UGen/freeSelf.help.lhs
deleted file mode 100644
--- a/Help/UGen/freeSelf.help.lhs
+++ /dev/null
@@ -1,5 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = dust 'α' KR 0.5
->     in mrg [sinOsc AR 440 0 * 0.1,freeSelf n]
diff --git a/Help/UGen/freeSelfWhenDone.help.lhs b/Help/UGen/freeSelfWhenDone.help.lhs
deleted file mode 100644
--- a/Help/UGen/freeSelfWhenDone.help.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-using RemoveSynth doneAction
-
-> g_01 =
->     let x = mouseX KR (-1) 1 Linear 0.1
->         e = linen x 1 0.1 1 RemoveSynth
->     in sinOsc AR 440 0 * e
-
-using FreeSelfWhenDone UGen
-
-> g_02 =
->     let x = mouseX KR (-1) 1 Linear 0.1
->         e = linen x 1 0.1 1 DoNothing
->     in mrg [sinOsc AR 440 0 * e,freeSelfWhenDone e]
diff --git a/Help/UGen/freeVerb.help.lhs b/Help/UGen/freeVerb.help.lhs
deleted file mode 100644
--- a/Help/UGen/freeVerb.help.lhs
+++ /dev/null
@@ -1,18 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let i = impulse AR 1 0
->         c = lfCub AR 1200 0
->         s = decay i 0.25 * c * 0.1
->         x = mouseX KR 0 1 Linear 0.1
->         y = mouseY KR 0 1 Linear 0.1
->     in freeVerb s y x 0.5
-
-Process input channels
-
-> g_02 =
->     let i = soundIn (mce2 0 1)
->         c = mceChannel
->         x = mouseX KR 0 1 Linear 0.1
->         y = mouseY KR 0 1 Linear 0.1
->     in freeVerb2 (c 0 i) (c 1 i) y x 0.5
diff --git a/Help/UGen/freqShift.help.lhs b/Help/UGen/freqShift.help.lhs
deleted file mode 100644
--- a/Help/UGen/freqShift.help.lhs
+++ /dev/null
@@ -1,47 +0,0 @@
-> import Sound.SC3 {- hcs3 -}
-
-Shifting a 100Hz tone by 1 Hz rising to 500Hz
-
-> g_01 =
->     let i = sinOsc AR 100 0
->         s = xLine KR 1 500 5 RemoveSynth
->     in freqShift i s 0 * 0.1
-
-Shifting a complex tone by 1 Hz rising to 500Hz
-
-> g_02 =
->     let d = klangSpec [101, 303, 606, 808] [1, 1, 1, 1] [1, 1, 1, 1]
->         i = klang AR 1 0 d
->         s = xLine KR 1 500 5 RemoveSynth
->     in freqShift i s 0 * 0.1
-
-Modulating shift and phase
-
-> g_03 =
->     let s = lfNoise2 'α' AR 0.3
->         i = sinOsc AR 10 0
->         p = linLin (sinOsc AR 500 0) (-1) 1 0 (2 * pi)
->     in freqShift i (s * 1500) p * 0.1
-
-Shifting bandpassed noise
-
-> g_04 =
->     let n1 = whiteNoise 'α' AR
->         n2 = lfNoise0 'β' AR 5.5
->         i = bpf n1 1000 0.001
->         s = n2 * 1000
->     in freqShift i s 0 * 32
-
-    {a=Blip.ar(60,4,LFGauss.ar(4,1/8))
-    ;a=a/4+LocalIn.ar(2)
-    ;a=FreqShift.ar(a,LFNoise0.kr(1/4,90))
-    ;LocalOut.ar(DelayC.ar(a,1,0.1,0.9))
-    ;a}.play
-
-> g_05 =
->     let e = lfGauss AR 4 (1/8) 0 Loop DoNothing
->         o = blip AR 60 4 * e
->         a = o / 4 + localIn 2 AR 0
->         s = freqShift a (lfNoise0 'α' KR (1/4) * 90) 0
->         z = delayC s 1 0.1 * 0.9
->     in mrg2 s (localOut z)
diff --git a/Help/UGen/gVerb.help.lhs b/Help/UGen/gVerb.help.lhs
deleted file mode 100644
--- a/Help/UGen/gVerb.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let i = impulse AR 1 0
->         c = lfCub AR 1200 0
->         s = decay i 0.25 * c * 0.1
->     in gVerb s 10 3 0.5 0.5 15 1 0.7 0.5 300
diff --git a/Help/UGen/gate.help.lhs b/Help/UGen/gate.help.lhs
deleted file mode 100644
--- a/Help/UGen/gate.help.lhs
+++ /dev/null
@@ -1,5 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let t = lfPulse AR 1 0 0.1
->   in gate (fSinOsc AR 500 0 * 0.25) t
diff --git a/Help/UGen/gaussTrig.help.lhs b/Help/UGen/gaussTrig.help.lhs
deleted file mode 100644
--- a/Help/UGen/gaussTrig.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let x = mouseX KR 0 0.9 Linear 0.2
->       t1 = X.gaussTrig KR 10 x * abs (whiteNoise 'α' KR) * 0.5
->       t2 = dust 'β' KR 10 * 0.5
->       n = pinkNoise 'γ' AR * decay (mce2 t1 t2) 0.02 * 0.5
->   in fold2 (ringz n 2000 0.02) 0.5
diff --git a/Help/UGen/gbmanL.help.lhs b/Help/UGen/gbmanL.help.lhs
deleted file mode 100644
--- a/Help/UGen/gbmanL.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See GbmanN
diff --git a/Help/UGen/gbmanN.help.lhs b/Help/UGen/gbmanN.help.lhs
deleted file mode 100644
--- a/Help/UGen/gbmanN.help.lhs
+++ /dev/null
@@ -1,25 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-default initial params
-
-> g_01 =
->     let x = mouseX KR 20 sampleRate Linear 0.2
->     in gbmanN AR x 1.2 2.1 * 0.1
-
-change initial params
-
-> g_02 =
->     let x = mouseX KR 20 sampleRate Linear 0.2
->     in gbmanN AR x (-0.7) (-2.7) * 0.1
-
-wait for it...
-
-> g_03 =
->     let x = mouseX KR 20 sampleRate Linear 0.2
->     in gbmanN AR x 1.2 2.0002 * 0.1
-
-as a frequency control
-
-> g_04 =
->     let f = gbmanN AR 40 1.2 2.1 * 400 + 500
->     in sinOsc AR f 0 * 0.4
diff --git a/Help/UGen/gendy1.help.lhs b/Help/UGen/gendy1.help.lhs
deleted file mode 100644
--- a/Help/UGen/gendy1.help.lhs
+++ /dev/null
@@ -1,111 +0,0 @@
-> import Data.Char {- base -}
-> import Sound.SC3 {- base -}
-
-SC3 default parameters
-
-> g_01 = gendy1 'α' AR 1 1 1 1 440 660 0.5 0.5 12 12 * 0.15
-
-Wandering bass
-
-> g_02 = gendy1 'α' AR 1 1 1.0 1.0 30 100 0.3 0.05 5 5 * 0.15
-
-Play me
-
-> g_03 =
->     let x = mouseX KR 100 1000 Exponential 0.1
->         g = gendy1 'α' AR 1 1 1.0 1.0 30 100 0.3 0.05 5 5
->     in rlpf g 500 0.3 * 0.1
-
-Scream!
-
-> g_04 =
->     let x = mouseX KR 220 440 Exponential 0.1
->         y = mouseY KR 0.0 1.0 Linear 0.1
->     in gendy1 'α' AR 2 3 1 1 x (8 * x) y y 7 7 *0.3
-
-1 CP = random noise
-
-> g_05 = gendy1 'α' AR 1 1 1 1 440 660 0.5 0.5 1 1 * 0.15
-
-2 CPs = an oscillator
-
-> g_06 = gendy1 'α' AR 1 1 1 1 440 660 0.5 0.5 2 2 * 0.15
-
-Used as an LFO
-
-> g_07 =
->     let ad = sinOsc KR 0.10 0 * 0.49 + 0.51
->         dd = sinOsc KR 0.13 0 * 0.49 + 0.51
->         as = sinOsc KR 0.17 0 * 0.49 + 0.51
->         ds = sinOsc KR 0.19 0 * 0.49 + 0.51
->         g = gendy1 'α' KR 2 4 ad dd 3.4 3.5 as ds 10 10
->     in sinOsc AR (g * 50 + 350) 0 * 0.3
-
-Wasp
-
-> g_08 =
->     let ad = sinOsc KR 0.1 0 * 0.1 + 0.9
->     in gendy1 'α' AR 0 0 ad 1.0 50 1000 1 0.005 12 12 * 0.2
-
-Modulate distributions. Change of pitch as distributions change
-the duration structure and spectrum
-
-> g_09 =
->     let x = mouseX KR 0 7 Linear 0.1
->         y = mouseY KR 0 7 Linear 0.1
->     in gendy1 'α' AR x y 1 1 440 660 0.5 0.5 12 12 * 0.2
-
-Modulate number of CPs.
-
-> g_10 =
->     let x = mouseX KR 1 13 Linear 0.1
->     in gendy1 'α' AR 1 1 1 1 440 660 0.5 0.5 12 x * 0.2
-
-Self modulation.
-
-> g_11 =
->     let x = mouseX KR 1   13 Linear 0.1
->         y = mouseY KR 0.1 10 Linear 0.1
->         g0 = gendy1 'α' AR 5 4 0.3 0.7 0.1 y 1.0 1.0 5 5
->     in gendy1 'α' AR 1 1 1 1 440 (g0 * 500 + 600) 0.5 0.5 12 x * 0.2
-
-Use SINUS to track any oscillator and take CP positions from it use
-adParam and ddParam as the inputs to sample.
-
-> g_12 =
->     let p = lfPulse KR 100 0 0.4
->         s = sinOsc KR 30 0 * 0.5
->     in gendy1 'α' AR 6 6 p s 440 660 0.5 0.5 12 12 * 0.2
-
-Near the corners are interesting.
-
-> g_13 =
->     let x = mouseX KR 0 200 Linear 0.1
->         y = mouseY KR 0 200 Linear 0.1
->         p = lfPulse KR x 0 0.4
->         s = sinOsc KR y 0 * 0.5
->     in gendy1 'α' AR 6 6 p s 440 660 0.5 0.5 12 12 * 0.2
-
-Texture
-
-> g_14 =
->     let node e = let f = rand e 130 160.3
->                      r0 = rand ('α',e) 0 6
->                      r1 = rand ('β',e) 0 6
->                      l = rand e (-1) 1
->                      ad = sinOsc KR 0.10 0 * 0.49 + 0.51
->                      dd = sinOsc KR 0.13 0 * 0.49 + 0.51
->                      as = sinOsc KR 0.17 0 * 0.49 + 0.51
->                      ds = sinOsc KR 0.19 0 * 0.49 + 0.51
->                      g = gendy1 'γ' AR r0 r1 ad dd f f as ds 12 12
->                      o = sinOsc AR (g * 200 + 400) 0
->                  in pan2 o l 0.1
->     in mix (mce (map node (id_seq 10 'δ')))
-
-Try durscale 10.0 and 0.0 too.
-
-> g_15 =
->     let x = mouseX KR 10 700 Linear 0.1
->         y = mouseY KR 50 1000 Linear 0.1
->         g = gendy1 'α' AR 2 3 1 1 1 x 0.5 0.1 10 10
->     in combN (resonz g y 0.1) 0.1 0.1 5 * 0.6
diff --git a/Help/UGen/grainBuf.help.lhs b/Help/UGen/grainBuf.help.lhs
deleted file mode 100644
--- a/Help/UGen/grainBuf.help.lhs
+++ /dev/null
@@ -1,30 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> fn_01 = "/home/rohan/data/audio/pf-c5.snd"
-
-> m_01 = b_allocRead 10 fn_01 0 0
-
-    > withSC3 (async m_01)
-
-> g_01 =
->     let buf = 10
->         dur = 15
->         lin a b = line KR a b dur RemoveSynth
->         tr = impulse KR (lin 7.5 15) 0
->         gd = lin 0.05 0.1
->         r = lin 1 0.5 {- rate -}
->         i = lin 0 1 {- read-location -}
->         l = lin (-0.5) 0.5 {- stereo-location -}
->     in grainBuf 2 tr gd buf r i 2 l (-1) 512
-
-> g_02 =
->     let b = 10
->         e = -1
->         x = mouseX KR (-1) 1 Linear 0.1
->         y = mouseY KR 10 45 Linear 0.1
->         i = impulse KR y 0
->         n1 = lfNoise1 'α' KR 500
->         n2 = lfNoise2 'β' KR 0.1
->         r = linLin n1 (-1) 1 0.5 2
->         p = linLin n2 (-1) 1 0 1
->     in grainBuf 2 i 0.1 b r p 2 x e 512
diff --git a/Help/UGen/grainFM.help.lhs b/Help/UGen/grainFM.help.lhs
deleted file mode 100644
--- a/Help/UGen/grainFM.help.lhs
+++ /dev/null
@@ -1,20 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let d = 15
->         lin a b = line KR a b d RemoveSynth
->         l = lin (-0.5) 0.5
->         f = lin 200 800
->         t = impulse KR (lin 7.5 15) 0
->         i = lin (-1) 1
->     in grainFM 2 t 0.1 f 200 i l (-1) 512 * 0.1
-
-> g_02 =
->     let n1 = whiteNoise 'α' KR
->         n2 = lfNoise1 'β' KR 500
->         x = mouseX KR (-0.5) 0.5 Linear 0.1
->         y = mouseY KR 0 400 Linear 0.1
->         f = n1 * y + 440
->         t = impulse KR 12.5 0
->         i = linLin n2 (-1) 1 1 10
->     in grainFM 2 t 0.1 f 200 i x (-1) 512 * 0.1
diff --git a/Help/UGen/grainIn.help.lhs b/Help/UGen/grainIn.help.lhs
deleted file mode 100644
--- a/Help/UGen/grainIn.help.lhs
+++ /dev/null
@@ -1,11 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> f_01 s =
->     let x = mouseX KR (-0.5) 0.5 Linear 0.1
->         y = mouseY KR 5 25 Linear 0.1
->         t = impulse KR y 0
->     in grainIn 2 t 0.1 s x (-1) 512 * 0.1
-
-> g_01 = f_01 (pinkNoise 'α' AR)
-
-> g_02 = let s = soundIn 0 in s * 0.05 + f_01 s
diff --git a/Help/UGen/grainSin.help.lhs b/Help/UGen/grainSin.help.lhs
deleted file mode 100644
--- a/Help/UGen/grainSin.help.lhs
+++ /dev/null
@@ -1,24 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = whiteNoise 'α' KR
->         x = mouseX KR (-0.5) 0.5 Linear 0.1
->         y = mouseY KR 0 400 Linear 0.1
->         f = n * y + 440
->         t = impulse KR 10 0
->     in grainSin 2 t 0.1 f x (-1) 512 * 0.1
-
--- <https://www.listarc.bham.ac.uk/lists/sc-users/msg66911.html>
-
-> f_02 k =
->   let t = impulse AR (mouseY KR 1 999 Linear 0.2) 0
->	f i = ((fromIntegral i ** range_hs (0.3,0.7) (lfNoise0 i KR 1)) + 1) * 99
->       l = mce (map f [0::Int .. k - 1])
->   in grainSin 2 t (mouseX KR 0.001 0.5 Exponential 0.2) (tChoose 'α' t l) 0 (-1) 512 * 0.01
-
-> g_02 = f_02 16
-
-> g_03 =
->   let (s1,s2) = unmce2 g_02
->   in freeVerb2 s1 s2 0.9 0.1 0.5
-
diff --git a/Help/UGen/grayNoise.help.lhs b/Help/UGen/grayNoise.help.lhs
deleted file mode 100644
--- a/Help/UGen/grayNoise.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = grayNoise 'α' AR * 0.1
-
-Drawing
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plot_ugen1 0.025 (grayNoise 'γ' AR)
-
-    import Sound.SC3.Plot.FFT {- hsc3-plot -}
-    plot_ugen_fft1 0.1 (grayNoise 'γ' AR)
-
-![](sw/hsc3/Help/SVG/grayNoise.0.svg)
-![](sw/hsc3/Help/SVG/grayNoise.1.svg)
diff --git a/Help/UGen/greater_than.help.lhs b/Help/UGen/greater_than.help.lhs
deleted file mode 100644
--- a/Help/UGen/greater_than.help.lhs
+++ /dev/null
@@ -1,2 +0,0 @@
-See equal_to
-
diff --git a/Help/UGen/greyholeRaw.help.lhs b/Help/UGen/greyholeRaw.help.lhs
deleted file mode 100644
--- a/Help/UGen/greyholeRaw.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-default values
-
-> g_01 =
->   let (i1,i2) = (soundIn 0,soundIn 1)
->   in X.greyholeRaw i1 i2 0.0 2.0 0.5 0.9 0.1 2.0 1.0
diff --git a/Help/UGen/hasher.help.lhs b/Help/UGen/hasher.help.lhs
deleted file mode 100644
--- a/Help/UGen/hasher.help.lhs
+++ /dev/null
@@ -1,21 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-noise
-
-> g_01 = hasher (line AR 0 1 1 RemoveSynth) * 0.2
-
-remap x
-
-> f_02 x_f =
->   let x = mouseX KR 0 10 Linear 0.2
->       f = hasher (x_f x) * 300 + 500
->   in sinOsc AR f 0 * 0.1
-
-> g_02 = f_02 (\x -> roundTo x 1)
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plot_ugen_nrt (400,1) 1.0 (hasher (line AR 0 1 1 RemoveSynth))
-
-> g_03 = f_02 id
-
-> g_04 = sinOsc AR (whiteNoise 'α' KR * 300 + 500) 0 * 0.1
diff --git a/Help/UGen/henonC.help.lhs b/Help/UGen/henonC.help.lhs
deleted file mode 100644
--- a/Help/UGen/henonC.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See henonN
diff --git a/Help/UGen/henonL.help.lhs b/Help/UGen/henonL.help.lhs
deleted file mode 100644
--- a/Help/UGen/henonL.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See henonN
diff --git a/Help/UGen/henonN.help.lhs b/Help/UGen/henonN.help.lhs
deleted file mode 100644
--- a/Help/UGen/henonN.help.lhs
+++ /dev/null
@@ -1,46 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.Common.Math.Noise {- hsc3 -}
-
-With SC3 default initial parameters.
-
-> g_01 =
->     let x = mouseX KR 20 sampleRate Linear 0.1
->     in henonN AR x 1.4 0.3 0 0 * 0.1
-
-With mouse-control of parameters.
-
-> g_02 =
->     let x = mouseX KR 1 1.4 Linear 0.1
->         y = mouseY KR 0 0.3 Linear 0.1
->     in henonN AR (sampleRate / 4) x y 0 0 * 0.1
-
-With randomly modulated parameters.
-
-> g_03 =
->     let n0 = lfNoise2 'α' KR 1 * 0.20 + 1.20
->         n1 = lfNoise2 'β' KR 1 * 0.15 + 0.15
->     in henonN AR (sampleRate / 8) n0 n1 0 0 * 0.1
-
-As a frequency control.
-
-> g_04 =
->     let x = mouseX KR 1 1.4 Linear 0.1
->         y = mouseY KR 0 0.3 Linear 0.1
->         f0 = 40
->         f = henonN AR f0 x y 0 0 * 800 + 900
->     in sinOsc AR f 0 * 0.4
-
-Drawing
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen1 0.1 (henonN AR 2500 1.4 0.3 0 0 * 0.1)
-
-![](sw/hsc3/Help/SVG/henonN.0.svg)
-
-In haskell:
-
-> henon_hs a b = map snd (iterate (henon_f a b) (0.0,0.0))
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plotTable1 (take 600 (henon_hs 1.4 0.3))
-    plot_ugen_nrt (600,1) 1.0 (henonN AR 600 1.4 0.3 0 0)
diff --git a/Help/UGen/hilbertFIR.help.lhs b/Help/UGen/hilbertFIR.help.lhs
deleted file mode 100644
--- a/Help/UGen/hilbertFIR.help.lhs
+++ /dev/null
@@ -1,5 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-composite UGen
-
-> g_01 = hilbertFIR (sinOsc AR 100 0 * dbAmp (-20)) (localBuf 'α' 2048 1)
diff --git a/Help/UGen/hpf.help.lhs b/Help/UGen/hpf.help.lhs
deleted file mode 100644
--- a/Help/UGen/hpf.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let f = fSinOsc KR (xLine KR 0.7 300 20 RemoveSynth) 0 * 3600 + 4000
->     in hpf (saw AR 200 * 0.2) f
-
-    import Sound.SC3.Plot.FFT {- hsc3-plot -}
-    plot_ugen_fft1 0.05 (hpf (whiteNoise 'α' AR) 12000)
diff --git a/Help/UGen/hpz1.help.lhs b/Help/UGen/hpz1.help.lhs
deleted file mode 100644
--- a/Help/UGen/hpz1.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = let n = whiteNoise 'α' AR in hpz1 (n * 0.25)
-
-    > import Sound.SC3.Plot.FFT {- hsc3-plot -}
-    > plot_ugen_fft1 0.05 (hpz1 (whiteNoise 'α' AR))
-
-detect changes in a signal (see also hpz2)
-
-> g_02 =
->   let n = lfNoise0 'α' AR 1000
->       h = hpz1 n
->   in mce [h,h >** 0,abs h >** 0]
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen 0.01 g_02
diff --git a/Help/UGen/hpz2.help.lhs b/Help/UGen/hpz2.help.lhs
deleted file mode 100644
--- a/Help/UGen/hpz2.help.lhs
+++ /dev/null
@@ -1,5 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let n = whiteNoise 'α' AR
->   in hpz2 (n * 0.25)
diff --git a/Help/UGen/hypot.help.lhs b/Help/UGen/hypot.help.lhs
deleted file mode 100644
--- a/Help/UGen/hypot.help.lhs
+++ /dev/null
@@ -1,26 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let x = mouseX KR 0 0.1 Linear 0.1
->         y = mouseY KR 0 0.1 Linear 0.1
->     in sinOsc AR 440 0 * hypot x y
-
-Object travels 200 meters in 6 secs (=120kph) passing 10 meters
-from the listener.  The speed of sound is 344 meters/sec.
-
-> g_02 =
->     let x = 10
->         y = lfSaw KR (1 / 6) 0 * 100
->         d = hypot x y
->         a = 10 / (squared d)
->         v = slope d
->         r = (344 - v) / 344
->     in fSinOsc AR (1000 * r) 0 * a
-
-> g_03 =
->     let x = 10
->         y = lfSaw KR (1 / 6) 0 * 100
->         d = hypot x y
->         a = 40 / (squared d)
->         s = rlpf (fSinOsc AR 200 0 * lfPulse AR 31.3 0 0.4) 400 0.3
->     in delayL s (110 / 344) (d / 344) * a
diff --git a/Help/UGen/iEnvGen.help.lhs b/Help/UGen/iEnvGen.help.lhs
deleted file mode 100644
--- a/Help/UGen/iEnvGen.help.lhs
+++ /dev/null
@@ -1,44 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> e_01 :: (Fractional n,Ord n) => Envelope n
-> e_01 =
->   let l = [0,0.6,0.3,1.0,0]
->       t = [0.1,0.02,0.4,1.1]
->       c = [EnvLin,EnvExp,EnvNum (-6),EnvSin]
->   in Envelope l t c Nothing Nothing 0
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plotEnvelope [e_01]
-
-> g_01 =
->     let x = mouseX KR 0 (envelope_duration e_01) Linear 0.2
->         g = iEnvGen KR x e_01
->     in sinOsc AR (g * 500 + 440) 0 * 0.1
-
-index with SinOsc. mouse controls amplitude of SinOsc.
-use offset so negative values of SinOsc will map into the Env
-
-> e_02 :: (Fractional n,Ord n) => Envelope n
-> e_02 =
->   let l = [-1,-0.7,0.7,1]
->       t = [0.8666,0.2666,0.8668]
->       c = [EnvLin,EnvLin]
->   in Envelope l t c Nothing Nothing 0
-
-    plotEnvelope [e_02]
-
-> g_02 =
->     let x = mouseX KR 0 1 Linear 0.2
->         o = (sinOsc AR 440 0 + 1) * x
->     in iEnvGen AR o e_02 * 0.1
-
-index with Amplitude of input, control freq of SinOsc (uses SoundIn)
-
-> e_03 :: (Fractional n,Ord n) => Envelope n
-> e_03 = envXYC [(0, 330, EnvExp), (0.5, 440, EnvExp), (1.0, 1760, EnvLin)]
-
-    plotEnvelope [e_03]
-
-> g_03 =
->     let pt = amplitude AR (soundIn 0) 0.01 0.2
->     in sinOsc AR (iEnvGen KR pt e_03) 0 * 0.2
diff --git a/Help/UGen/iRand.help.lhs b/Help/UGen/iRand.help.lhs
deleted file mode 100644
--- a/Help/UGen/iRand.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let f = iRand 'α' 200 1200
->         e = line KR 0.2 0 0.1 RemoveSynth
->     in fSinOsc AR f 0 * e
diff --git a/Help/UGen/ifft.help.lhs b/Help/UGen/ifft.help.lhs
deleted file mode 100644
--- a/Help/UGen/ifft.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-# ifft' is a variant with the default window type and size
diff --git a/Help/UGen/iirFilter.help.lhs b/Help/UGen/iirFilter.help.lhs
deleted file mode 100644
--- a/Help/UGen/iirFilter.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let x = mouseX KR 20 12000 Exponential 0.2
->       y = mouseY KR 0.01 1 Linear 0.2
->       o = lfSaw AR (mce [x * 0.99,x * 1.01]) 0 * 0.1
->       freq = sinOsc KR (sinOsc KR 0.1 0) (1.5 * pi) * 1550 + 1800
->       s = X.iirFilter o freq y
->   in combN s 0.5 (mce2 0.4 0.35) 2 * 0.4 + s * 0.5
diff --git a/Help/UGen/impulse.help.lhs b/Help/UGen/impulse.help.lhs
deleted file mode 100644
--- a/Help/UGen/impulse.help.lhs
+++ /dev/null
@@ -1,18 +0,0 @@
-Note: SC2 had no phase input.
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = impulse AR 800 0 * 0.1
-
-> g_02 =
->     let f = xLine KR 800 10 5 RemoveSynth
->     in impulse AR f 0.0 * 0.1
-
-> g_03 =
->     let f = mouseY KR 4 8 Linear 0.1
->         x = mouseX KR 0 1 Linear 0.1
->     in impulse AR f (mce [0,x]) * 0.1
-
-An impulse with frequency 0 returns a single impulse
-
-> g_04 = decay (impulse AR 0 0) 1 * brownNoise 'α' AR * 0.1
diff --git a/Help/UGen/in.help.lhs b/Help/UGen/in.help.lhs
deleted file mode 100644
--- a/Help/UGen/in.help.lhs
+++ /dev/null
@@ -1,58 +0,0 @@
-Note: `hsc3` renames UGen to `in'` since `in` is a reserved keyword
-
-> import Sound.OSC {- hosc -}
-> import Sound.SC3 {- hsc3 -}
-
-Patching input to output (see also soundIn).
-
-> g_01 = in' 2 AR numOutputBuses
-
-Patching input to output, with delay.
-
-> g_02 =
->     let i = in' 2 AR numOutputBuses
->         d = delayN i 0.5 0.5
->     in i + d
-
-Write noise to first private bus, then read it out.
-The multiple root graph is ordered.
-
-> g_03 =
->     let n = pinkNoise 'α' AR
->         b = numOutputBuses + numInputBuses
->         wr = out b (n * 0.3)
->         rd = out 0 (in' 1 AR b)
->     in mrg [rd,wr]
-
-There are functions to encapsulate the offset calculation.
-(There is also a firstPrivateBus value.)
-
-> g_04 =
->     let n = pinkNoise 'α' AR
->         wr = privateOut 0 (n * 0.3)
->         rd = out 0 (privateIn 1 AR 0)
->     in mrg [rd,wr]
-
-Set value on a control bus
-
-    > withSC3 (sendMessage (c_set1 0 300))
-
-Read a control bus
-
-> g_05 = sinOsc AR (in' 1 KR 0) 0 * 0.1
-
-Re-set value on bus
-
-    > withSC3 (sendMessage (c_set1 0 600))
-
-Control rate graph writing buses 0 & 1.
-
-> g_06 = mce2 (tRand 'α' 220 2200 (dust 'β' KR 1)) (dust 'γ' KR 3)
-
-Audio rate graph reading control buses 0 & 1.
-
-> g_07 = sinOsc AR (in' 1 KR 0) 0 * decay (in' 1 KR 1) 0.2 * 0.1
-
-Patch mono input to stereo output
-
-> g_08 = pan2 (in' 1 AR numOutputBuses) 0 1
diff --git a/Help/UGen/inFeedback.help.lhs b/Help/UGen/inFeedback.help.lhs
deleted file mode 100644
--- a/Help/UGen/inFeedback.help.lhs
+++ /dev/null
@@ -1,34 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Audio feedback modulation
-
-> g_01 =
->     let f = inFeedback 1 0 * 1300 + 300
->     in sinOsc AR f 0 * 0.4
-
-Audition these in either order and hear both tones.
-
-> g_02 = inFeedback 1 firstPrivateBus
-
-> g_03 =
->     let b  = firstPrivateBus
->         s0 = out b (sinOsc AR 220 0 * 0.1)
->         s1 = out 0 (sinOsc AR 660 0 * 0.1)
->     in mrg [s0, s1]
-
-Doubters consult this
-
-> g_04 = let b = firstPrivateBus in in' 1 AR b
-
-Resonator, see localOut for variant.
-
-> g_05 =
->     let b = firstPrivateBus
->         p = inFeedback 1 b
->         i = impulse AR 1 0
->         d = delayC (i + (p * 0.995)) 1 (recip 440 - recip controlRate)
->     in mrg [offsetOut b d, offsetOut 0 p]
-
-Compare with oscillator (at right).
-
-> g_06 = out 1 (sinOsc AR 440 0 * 0.2)
diff --git a/Help/UGen/inRange.help.lhs b/Help/UGen/inRange.help.lhs
deleted file mode 100644
--- a/Help/UGen/inRange.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-trigger noise burst
-
-> g_01 =
->     let n = brownNoise 'α' AR * 0.1
->         x = mouseX KR 1 2 Linear 0.1
->         o = sinOsc KR x 0 * 0.2
->     in inRange o (-0.15) 0.15 * n
-
-i-rate...
-
-> g_02 = sinOsc AR 440 0 * inRange (rand 'α' 0 1) 0.5 1.0 * 0.1
diff --git a/Help/UGen/inTrig.help.lhs b/Help/UGen/inTrig.help.lhs
deleted file mode 100644
--- a/Help/UGen/inTrig.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Run an oscillator with the trigger at bus 10.
-
-> g_01 =
->     let t = inTrig 1 10
->         e = envGen KR t t 0 1 DoNothing (envPerc 0.01 1)
->     in sinOsc AR 440 0 * e
-
-Set bus 10, each set will trigger a ping.
-
-    > withSC3 (sendMessage (c_set1 10 0.1))
diff --git a/Help/UGen/index.help.lhs b/Help/UGen/index.help.lhs
deleted file mode 100644
--- a/Help/UGen/index.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Index buffer for frequency values
-
-> g_01 =
->   let b = asLocalBuf 'α' [50,100,200,400,800,1600]
->       f = index b (range 0 6 (lfSaw KR 2 0))
->   in sinOsc AR (mce [f,f * 9]) 0 * 0.1
-
-> g_02 =
->   let b = asLocalBuf 'α' [200, 300, 400, 500, 600, 800]
->       f = index b (mouseX KR 0 7 Linear 0.2)
->   in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/indexInBetween.help.lhs b/Help/UGen/indexInBetween.help.lhs
deleted file mode 100644
--- a/Help/UGen/indexInBetween.help.lhs
+++ /dev/null
@@ -1,19 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Index into buffer for frequency values
-
-> g_01 =
->     let f0 = mouseX KR 200 900 Linear 0.1
->         b = asLocalBuf 'α' [200,210,400,430,600,800]
->         i = indexInBetween b f0
->         l0 = index b i
->         l1 = index b (i + 1)
->         f1 = linLin (frac i) 0 1 l0 l1
->     in sinOsc AR (mce [f0,f1]) 0 * 0.1
-
-> g_02 =
->     let from = asLocalBuf 'α' [1, 2, 4, 8, 16]
->         to = asLocalBuf 'β' [0, 1, 0, -1, 0]
->         x = mouseX KR 1 16 Linear 0.1
->         i = indexL to (indexInBetween from x)
->     in sinOsc AR (linLin i (-1) 1 440 880) 0 * 0.1
diff --git a/Help/UGen/indexL.help.lhs b/Help/UGen/indexL.help.lhs
deleted file mode 100644
--- a/Help/UGen/indexL.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Index buffer for frequency values
-
-> g_01 =
->   let b = asLocalBuf 'α' [50,100,200,400,800,1600]
->       ph = 1 -- 0
->       i = range 0 7 (lfSaw KR 0.1 ph)
->   in sinOsc AR (mce2 (indexL b i) (index b i)) 0 * 0.1
-
-> g_02 =
->   let b = asLocalBuf 'α' [200,300,400,500,600,800]
->       x = mouseX KR 0 7 Linear 0.2
->   in sinOsc AR (mce2 (indexL b x) (index b x)) 0 * 0.1
diff --git a/Help/UGen/integrator.help.lhs b/Help/UGen/integrator.help.lhs
deleted file mode 100644
--- a/Help/UGen/integrator.help.lhs
+++ /dev/null
@@ -1,29 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let x = mouseX KR 0.001 0.999 Exponential 0.2
->         o = lfPulse AR 300 0.2 0.1 * 0.1
->     in integrator o x
-
-used as an envelope
-
-> g_02 =
->     let i = lfPulse AR 3 0.2 0.0004
->         o = sinOsc AR 700 0 * 0.1
->     in integrator i 0.999 * o
-
-
-scope
-
-> g_03 =
->     let x = mouseX KR 0.01 0.999 Exponential 0.2
->         o = lfPulse AR (1500 / 4) 0.2 0.1
->     in integrator o x * 0.1
-
-Drawing
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > let s = lfPulse AR (1500 / 4) 0.2 0.1
-    > plot_ugen 0.006 (integrator s (mce [0.1,0.4,0.7]))
-
-![](sw/hsc3/Help/SVG/integrator.0.svg)
diff --git a/Help/UGen/ix.md b/Help/UGen/ix.md
--- a/Help/UGen/ix.md
+++ b/Help/UGen/ix.md
@@ -1,704 +1,1298 @@
 ## Algebraic
-
-[sum3](?t=hsc3&e=Help/UGen/sum3.help.lhs),
-[sum4](?t=hsc3&e=Help/UGen/sum4.help.lhs)
-
-
-## Analysis
-
-[beatTrack](?t=hsc3&e=Help/UGen/beatTrack.help.lhs),
-[beatTrack2](?t=hsc3&e=Help/UGen/beatTrack2.help.lhs),
-[mfcc](?t=hsc3&e=Help/UGen/mfcc.help.lhs),
-[onsets](?t=hsc3&e=Help/UGen/onsets.help.lhs),
-[runningSum](?t=hsc3&e=Help/UGen/runningSum.help.lhs),
-[slope](?t=hsc3&e=Help/UGen/slope.help.lhs)
-
-
-## Analysis>Amplitude
-
-[ampComp](?t=hsc3&e=Help/UGen/ampComp.help.lhs),
-[ampCompA](?t=hsc3&e=Help/UGen/ampCompA.help.lhs),
-[amplitude](?t=hsc3&e=Help/UGen/amplitude.help.lhs),
-[detectSilence](?t=hsc3&e=Help/UGen/detectSilence.help.lhs),
-[loudness](?t=hsc3&e=Help/UGen/loudness.help.lhs),
-[peak](?t=hsc3&e=Help/UGen/peak.help.lhs),
-[peakFollower](?t=hsc3&e=Help/UGen/peakFollower.help.lhs),
-[sendPeakRMS](?t=hsc3&e=Help/UGen/sendPeakRMS.help.lhs)
-
-
-## Analysis>Pitch
-
-[keyTrack](?t=hsc3&e=Help/UGen/keyTrack.help.lhs),
-[pitch](?t=hsc3&e=Help/UGen/pitch.help.lhs),
-[zeroCrossing](?t=hsc3&e=Help/UGen/zeroCrossing.help.lhs)
-
-
-## Buffer
-
-[bufRd](?t=hsc3&e=Help/UGen/bufRd.help.lhs),
-[bufWr](?t=hsc3&e=Help/UGen/bufWr.help.lhs),
-[dbufrd](?t=hsc3&e=Help/UGen/dbufrd.help.lhs),
-[dbufwr](?t=hsc3&e=Help/UGen/dbufwr.help.lhs),
-[delTapRd](?t=hsc3&e=Help/UGen/delTapRd.help.lhs),
-[delTapWr](?t=hsc3&e=Help/UGen/delTapWr.help.lhs),
-[detectIndex](?t=hsc3&e=Help/UGen/detectIndex.help.lhs),
-[diskIn](?t=hsc3&e=Help/UGen/diskIn.help.lhs),
-[diskOut](?t=hsc3&e=Help/UGen/diskOut.help.lhs),
-[grainBuf](?t=hsc3&e=Help/UGen/grainBuf.help.lhs),
-[index](?t=hsc3&e=Help/UGen/index.help.lhs),
-[indexInBetween](?t=hsc3&e=Help/UGen/indexInBetween.help.lhs),
-[indexL](?t=hsc3&e=Help/UGen/indexL.help.lhs),
-[localBuf](?t=hsc3&e=Help/UGen/localBuf.help.lhs),
-[phasor](?t=hsc3&e=Help/UGen/phasor.help.lhs),
-[playBuf](?t=hsc3&e=Help/UGen/playBuf.help.lhs),
-[recordBuf](?t=hsc3&e=Help/UGen/recordBuf.help.lhs),
-[scopeOut](?t=hsc3&e=Help/UGen/scopeOut.help.lhs),
-[shaper](?t=hsc3&e=Help/UGen/shaper.help.lhs),
-[tGrains](?t=hsc3&e=Help/UGen/tGrains.help.lhs),
-[tap](?t=hsc3&e=Help/UGen/tap.help.lhs),
-[vDiskIn](?t=hsc3&e=Help/UGen/vDiskIn.help.lhs),
-[warp1](?t=hsc3&e=Help/UGen/warp1.help.lhs),
-[wrapIndex](?t=hsc3&e=Help/UGen/wrapIndex.help.lhs)
-
-
-## Buffer>Info
-
-[bufChannels](?t=hsc3&e=Help/UGen/bufChannels.help.lhs),
-[bufDur](?t=hsc3&e=Help/UGen/bufDur.help.lhs),
-[bufFrames](?t=hsc3&e=Help/UGen/bufFrames.help.lhs),
-[bufRateScale](?t=hsc3&e=Help/UGen/bufRateScale.help.lhs),
-[bufSampleRate](?t=hsc3&e=Help/UGen/bufSampleRate.help.lhs),
-[bufSamples](?t=hsc3&e=Help/UGen/bufSamples.help.lhs)
-
-
-## Conversion
-
-[a2k](?t=hsc3&e=Help/UGen/a2k.help.lhs),
-[degreeToKey](?t=hsc3&e=Help/UGen/degreeToKey.help.lhs),
-[k2a](?t=hsc3&e=Help/UGen/k2a.help.lhs),
-[t2a](?t=hsc3&e=Help/UGen/t2a.help.lhs),
-[t2k](?t=hsc3&e=Help/UGen/t2k.help.lhs)
-
-
-## Convolution
-
-[convolution](?t=hsc3&e=Help/UGen/convolution.help.lhs),
-[convolution2](?t=hsc3&e=Help/UGen/convolution2.help.lhs),
-[convolution2L](?t=hsc3&e=Help/UGen/convolution2L.help.lhs),
-[convolution3](?t=hsc3&e=Help/UGen/convolution3.help.lhs),
-[partConv](?t=hsc3&e=Help/UGen/partConv.help.lhs),
-[stereoConvolution2L](?t=hsc3&e=Help/UGen/stereoConvolution2L.help.lhs)
-
-
-## Delays
-
-[allpassC](?t=hsc3&e=Help/UGen/allpassC.help.lhs),
-[allpassL](?t=hsc3&e=Help/UGen/allpassL.help.lhs),
-[allpassN](?t=hsc3&e=Help/UGen/allpassN.help.lhs),
-[combC](?t=hsc3&e=Help/UGen/combC.help.lhs),
-[combL](?t=hsc3&e=Help/UGen/combL.help.lhs),
-[combN](?t=hsc3&e=Help/UGen/combN.help.lhs),
-[delTapRd](?t=hsc3&e=Help/UGen/delTapRd.help.lhs),
-[delTapWr](?t=hsc3&e=Help/UGen/delTapWr.help.lhs),
-[delay1](?t=hsc3&e=Help/UGen/delay1.help.lhs),
-[delay2](?t=hsc3&e=Help/UGen/delay2.help.lhs),
-[delayC](?t=hsc3&e=Help/UGen/delayC.help.lhs),
-[delayL](?t=hsc3&e=Help/UGen/delayL.help.lhs),
-[delayN](?t=hsc3&e=Help/UGen/delayN.help.lhs),
-[pluck](?t=hsc3&e=Help/UGen/pluck.help.lhs),
-[tDelay](?t=hsc3&e=Help/UGen/tDelay.help.lhs)
-
-
-## Delays>Buffer
-
-[bufAllpassC](?t=hsc3&e=Help/UGen/bufAllpassC.help.lhs),
-[bufAllpassL](?t=hsc3&e=Help/UGen/bufAllpassL.help.lhs),
-[bufAllpassN](?t=hsc3&e=Help/UGen/bufAllpassN.help.lhs),
-[bufCombC](?t=hsc3&e=Help/UGen/bufCombC.help.lhs),
-[bufCombL](?t=hsc3&e=Help/UGen/bufCombL.help.lhs),
-[bufCombN](?t=hsc3&e=Help/UGen/bufCombN.help.lhs),
-[bufDelayC](?t=hsc3&e=Help/UGen/bufDelayC.help.lhs),
-[bufDelayL](?t=hsc3&e=Help/UGen/bufDelayL.help.lhs),
-[bufDelayN](?t=hsc3&e=Help/UGen/bufDelayN.help.lhs),
-[tap](?t=hsc3&e=Help/UGen/tap.help.lhs)
-
-
-## Demand
-
-[dbrown](?t=hsc3&e=Help/UGen/dbrown.help.lhs),
-[dbufrd](?t=hsc3&e=Help/UGen/dbufrd.help.lhs),
-[dbufwr](?t=hsc3&e=Help/UGen/dbufwr.help.lhs),
-[dconst](?t=hsc3&e=Help/UGen/dconst.help.lhs),
-[demand](?t=hsc3&e=Help/UGen/demand.help.lhs),
-[demandEnvGen](?t=hsc3&e=Help/UGen/demandEnvGen.help.lhs),
-[dgeom](?t=hsc3&e=Help/UGen/dgeom.help.lhs),
-[dibrown](?t=hsc3&e=Help/UGen/dibrown.help.lhs),
-[diwhite](?t=hsc3&e=Help/UGen/diwhite.help.lhs),
-[dpoll](?t=hsc3&e=Help/UGen/dpoll.help.lhs),
-[drand](?t=hsc3&e=Help/UGen/drand.help.lhs),
-[dreset](?t=hsc3&e=Help/UGen/dreset.help.lhs),
-[dseq](?t=hsc3&e=Help/UGen/dseq.help.lhs),
-[dser](?t=hsc3&e=Help/UGen/dser.help.lhs),
-[dseries](?t=hsc3&e=Help/UGen/dseries.help.lhs),
-[dshuf](?t=hsc3&e=Help/UGen/dshuf.help.lhs),
-[dstutter](?t=hsc3&e=Help/UGen/dstutter.help.lhs),
-[dswitch](?t=hsc3&e=Help/UGen/dswitch.help.lhs),
-[dswitch1](?t=hsc3&e=Help/UGen/dswitch1.help.lhs),
-[dunique](?t=hsc3&e=Help/UGen/dunique.help.lhs),
-[duty](?t=hsc3&e=Help/UGen/duty.help.lhs),
-[dwhite](?t=hsc3&e=Help/UGen/dwhite.help.lhs),
-[dwrand](?t=hsc3&e=Help/UGen/dwrand.help.lhs),
-[dxrand](?t=hsc3&e=Help/UGen/dxrand.help.lhs),
-[tDuty](?t=hsc3&e=Help/UGen/tDuty.help.lhs)
-
-
-## Dynamics
-
-[compander](?t=hsc3&e=Help/UGen/compander.help.lhs),
-[companderD](?t=hsc3&e=Help/UGen/companderD.help.lhs),
-[limiter](?t=hsc3&e=Help/UGen/limiter.help.lhs),
-[normalizer](?t=hsc3&e=Help/UGen/normalizer.help.lhs)
-
-
-## Envelopes
-
-[decay](?t=hsc3&e=Help/UGen/decay.help.lhs),
-[decay2](?t=hsc3&e=Help/UGen/decay2.help.lhs),
-[demandEnvGen](?t=hsc3&e=Help/UGen/demandEnvGen.help.lhs),
-[envGen](?t=hsc3&e=Help/UGen/envGen.help.lhs),
-[iEnvGen](?t=hsc3&e=Help/UGen/iEnvGen.help.lhs),
-[line](?t=hsc3&e=Help/UGen/line.help.lhs),
-[linen](?t=hsc3&e=Help/UGen/linen.help.lhs),
-[xLine](?t=hsc3&e=Help/UGen/xLine.help.lhs)
-
-
-## FFT
-
-[beatTrack](?t=hsc3&e=Help/UGen/beatTrack.help.lhs),
-[beatTrack2](?t=hsc3&e=Help/UGen/beatTrack2.help.lhs),
-[convolution](?t=hsc3&e=Help/UGen/convolution.help.lhs),
-[convolution2](?t=hsc3&e=Help/UGen/convolution2.help.lhs),
-[convolution2L](?t=hsc3&e=Help/UGen/convolution2L.help.lhs),
-[fft](?t=hsc3&e=Help/UGen/fft.help.lhs),
-[fftTrigger](?t=hsc3&e=Help/UGen/fftTrigger.help.lhs),
-[ifft](?t=hsc3&e=Help/UGen/ifft.help.lhs),
-[pv_Add](?t=hsc3&e=Help/UGen/pv_Add.help.lhs),
-[pv_BinScramble](?t=hsc3&e=Help/UGen/pv_BinScramble.help.lhs),
-[pv_BinShift](?t=hsc3&e=Help/UGen/pv_BinShift.help.lhs),
-[pv_BinWipe](?t=hsc3&e=Help/UGen/pv_BinWipe.help.lhs),
-[pv_BrickWall](?t=hsc3&e=Help/UGen/pv_BrickWall.help.lhs),
-[pv_ChainUGen](?t=hsc3&e=Help/UGen/pv_ChainUGen.help.lhs),
-[pv_ConformalMap](?t=hsc3&e=Help/UGen/pv_ConformalMap.help.lhs),
-[pv_Conj](?t=hsc3&e=Help/UGen/pv_Conj.help.lhs),
-[pv_Copy](?t=hsc3&e=Help/UGen/pv_Copy.help.lhs),
-[pv_CopyPhase](?t=hsc3&e=Help/UGen/pv_CopyPhase.help.lhs),
-[pv_Diffuser](?t=hsc3&e=Help/UGen/pv_Diffuser.help.lhs),
-[pv_Div](?t=hsc3&e=Help/UGen/pv_Div.help.lhs),
-[pv_HainsworthFoote](?t=hsc3&e=Help/UGen/pv_HainsworthFoote.help.lhs),
-[pv_JensenAndersen](?t=hsc3&e=Help/UGen/pv_JensenAndersen.help.lhs),
-[pv_LocalMax](?t=hsc3&e=Help/UGen/pv_LocalMax.help.lhs),
-[pv_MagAbove](?t=hsc3&e=Help/UGen/pv_MagAbove.help.lhs),
-[pv_MagBelow](?t=hsc3&e=Help/UGen/pv_MagBelow.help.lhs),
-[pv_MagClip](?t=hsc3&e=Help/UGen/pv_MagClip.help.lhs),
-[pv_MagDiv](?t=hsc3&e=Help/UGen/pv_MagDiv.help.lhs),
-[pv_MagFreeze](?t=hsc3&e=Help/UGen/pv_MagFreeze.help.lhs),
-[pv_MagMul](?t=hsc3&e=Help/UGen/pv_MagMul.help.lhs),
-[pv_MagNoise](?t=hsc3&e=Help/UGen/pv_MagNoise.help.lhs),
-[pv_MagShift](?t=hsc3&e=Help/UGen/pv_MagShift.help.lhs),
-[pv_MagSmear](?t=hsc3&e=Help/UGen/pv_MagSmear.help.lhs),
-[pv_MagSquared](?t=hsc3&e=Help/UGen/pv_MagSquared.help.lhs),
-[pv_Max](?t=hsc3&e=Help/UGen/pv_Max.help.lhs),
-[pv_Min](?t=hsc3&e=Help/UGen/pv_Min.help.lhs),
-[pv_Mul](?t=hsc3&e=Help/UGen/pv_Mul.help.lhs),
-[pv_PhaseShift](?t=hsc3&e=Help/UGen/pv_PhaseShift.help.lhs),
-[pv_PhaseShift270](?t=hsc3&e=Help/UGen/pv_PhaseShift270.help.lhs),
-[pv_PhaseShift90](?t=hsc3&e=Help/UGen/pv_PhaseShift90.help.lhs),
-[pv_RandComb](?t=hsc3&e=Help/UGen/pv_RandComb.help.lhs),
-[pv_RandWipe](?t=hsc3&e=Help/UGen/pv_RandWipe.help.lhs),
-[pv_RectComb](?t=hsc3&e=Help/UGen/pv_RectComb.help.lhs),
-[pv_RectComb2](?t=hsc3&e=Help/UGen/pv_RectComb2.help.lhs),
-[packFFT](?t=hsc3&e=Help/UGen/packFFT.help.lhs),
-[partConv](?t=hsc3&e=Help/UGen/partConv.help.lhs),
-[specCentroid](?t=hsc3&e=Help/UGen/specCentroid.help.lhs),
-[specFlatness](?t=hsc3&e=Help/UGen/specFlatness.help.lhs),
-[specPcile](?t=hsc3&e=Help/UGen/specPcile.help.lhs),
-[stereoConvolution2L](?t=hsc3&e=Help/UGen/stereoConvolution2L.help.lhs),
-[unpack1FFT](?t=hsc3&e=Help/UGen/unpack1FFT.help.lhs),
-[unpackFFT](?t=hsc3&e=Help/UGen/unpackFFT.help.lhs)
-
-
-## Filters
-
-[lag2UD](?t=hsc3&e=Help/UGen/lag2UD.help.lhs),
-[lag3UD](?t=hsc3&e=Help/UGen/lag3UD.help.lhs),
-[lagUD](?t=hsc3&e=Help/UGen/lagUD.help.lhs),
-[moogFF](?t=hsc3&e=Help/UGen/moogFF.help.lhs)
-
-
-## Filters>BEQSuite
-
-[bAllPass](?t=hsc3&e=Help/UGen/bAllPass.help.lhs),
-[bBandPass](?t=hsc3&e=Help/UGen/bBandPass.help.lhs),
-[bBandStop](?t=hsc3&e=Help/UGen/bBandStop.help.lhs),
-[beqSuite](?t=hsc3&e=Help/UGen/beqSuite.help.lhs),
-[bHiPass](?t=hsc3&e=Help/UGen/bHiPass.help.lhs),
-[bHiShelf](?t=hsc3&e=Help/UGen/bHiShelf.help.lhs),
-[bLowPass](?t=hsc3&e=Help/UGen/bLowPass.help.lhs),
-[bLowShelf](?t=hsc3&e=Help/UGen/bLowShelf.help.lhs),
-[bPeakEQ](?t=hsc3&e=Help/UGen/bPeakEQ.help.lhs)
-
-
-## Filters>Linear
-
-[apf](?t=hsc3&e=Help/UGen/apf.help.lhs),
-[bpf](?t=hsc3&e=Help/UGen/bpf.help.lhs),
-[bpz2](?t=hsc3&e=Help/UGen/bpz2.help.lhs),
-[brf](?t=hsc3&e=Help/UGen/brf.help.lhs),
-[brz2](?t=hsc3&e=Help/UGen/brz2.help.lhs),
-[changed](?t=hsc3&e=Help/UGen/changed.help.lhs),
-[decay](?t=hsc3&e=Help/UGen/decay.help.lhs),
-[decay2](?t=hsc3&e=Help/UGen/decay2.help.lhs),
-[dynKlank](?t=hsc3&e=Help/UGen/dynKlank.help.lhs),
-[fos](?t=hsc3&e=Help/UGen/fos.help.lhs),
-[formlet](?t=hsc3&e=Help/UGen/formlet.help.lhs),
-[hpf](?t=hsc3&e=Help/UGen/hpf.help.lhs),
-[hpz1](?t=hsc3&e=Help/UGen/hpz1.help.lhs),
-[hpz2](?t=hsc3&e=Help/UGen/hpz2.help.lhs),
-[integrator](?t=hsc3&e=Help/UGen/integrator.help.lhs),
-[klank](?t=hsc3&e=Help/UGen/klank.help.lhs),
-[lpf](?t=hsc3&e=Help/UGen/lpf.help.lhs),
-[lpz1](?t=hsc3&e=Help/UGen/lpz1.help.lhs),
-[lpz2](?t=hsc3&e=Help/UGen/lpz2.help.lhs),
-[lag](?t=hsc3&e=Help/UGen/lag.help.lhs),
-[lag2](?t=hsc3&e=Help/UGen/lag2.help.lhs),
-[lag3](?t=hsc3&e=Help/UGen/lag3.help.lhs),
-[leakDC](?t=hsc3&e=Help/UGen/leakDC.help.lhs),
-[midEQ](?t=hsc3&e=Help/UGen/midEQ.help.lhs),
-[onePole](?t=hsc3&e=Help/UGen/onePole.help.lhs),
-[oneZero](?t=hsc3&e=Help/UGen/oneZero.help.lhs),
-[rhpf](?t=hsc3&e=Help/UGen/rhpf.help.lhs),
-[rlpf](?t=hsc3&e=Help/UGen/rlpf.help.lhs),
-[ramp](?t=hsc3&e=Help/UGen/ramp.help.lhs),
-[resonz](?t=hsc3&e=Help/UGen/resonz.help.lhs),
-[ringz](?t=hsc3&e=Help/UGen/ringz.help.lhs),
-[sos](?t=hsc3&e=Help/UGen/sos.help.lhs),
-[slope](?t=hsc3&e=Help/UGen/slope.help.lhs),
-[twoPole](?t=hsc3&e=Help/UGen/twoPole.help.lhs),
-[twoZero](?t=hsc3&e=Help/UGen/twoZero.help.lhs),
-[varLag](?t=hsc3&e=Help/UGen/varLag.help.lhs)
-
-
-## Filters>Nonlinear
-
-[ball](?t=hsc3&e=Help/UGen/ball.help.lhs),
-[freqShift](?t=hsc3&e=Help/UGen/freqShift.help.lhs),
-[hasher](?t=hsc3&e=Help/UGen/hasher.help.lhs),
-[hilbert](?t=hsc3&e=Help/UGen/hilbert.help.lhs),
-[hilbertFIR](?t=hsc3&e=Help/UGen/hilbertFIR.help.lhs),
-[mantissaMask](?t=hsc3&e=Help/UGen/mantissaMask.help.lhs),
-[median](?t=hsc3&e=Help/UGen/median.help.lhs),
-[slew](?t=hsc3&e=Help/UGen/slew.help.lhs),
-[spring](?t=hsc3&e=Help/UGen/spring.help.lhs),
-[tBall](?t=hsc3&e=Help/UGen/tBall.help.lhs)
-
-
-## Filters>Pitch
-
-[freqShift](?t=hsc3&e=Help/UGen/freqShift.help.lhs),
-[pitchShift](?t=hsc3&e=Help/UGen/pitchShift.help.lhs),
-[vibrato](?t=hsc3&e=Help/UGen/vibrato.help.lhs)
-
-
-## Generators>Chaotic
-
-[chaosGen](?t=hsc3&e=Help/UGen/chaosGen.help.lhs),
-[cuspL](?t=hsc3&e=Help/UGen/cuspL.help.lhs),
-[cuspN](?t=hsc3&e=Help/UGen/cuspN.help.lhs),
-[fbSineC](?t=hsc3&e=Help/UGen/fbSineC.help.lhs),
-[fbSineL](?t=hsc3&e=Help/UGen/fbSineL.help.lhs),
-[fbSineN](?t=hsc3&e=Help/UGen/fbSineN.help.lhs),
-[gbmanL](?t=hsc3&e=Help/UGen/gbmanL.help.lhs),
-[gbmanN](?t=hsc3&e=Help/UGen/gbmanN.help.lhs),
-[henonC](?t=hsc3&e=Help/UGen/henonC.help.lhs),
-[henonL](?t=hsc3&e=Help/UGen/henonL.help.lhs),
-[henonN](?t=hsc3&e=Help/UGen/henonN.help.lhs),
-[latoocarfianC](?t=hsc3&e=Help/UGen/latoocarfianC.help.lhs),
-[latoocarfianL](?t=hsc3&e=Help/UGen/latoocarfianL.help.lhs),
-[latoocarfianN](?t=hsc3&e=Help/UGen/latoocarfianN.help.lhs),
-[linCongC](?t=hsc3&e=Help/UGen/linCongC.help.lhs),
-[linCongL](?t=hsc3&e=Help/UGen/linCongL.help.lhs),
-[linCongN](?t=hsc3&e=Help/UGen/linCongN.help.lhs),
-[logistic](?t=hsc3&e=Help/UGen/logistic.help.lhs),
-[lorenzL](?t=hsc3&e=Help/UGen/lorenzL.help.lhs),
-[quadC](?t=hsc3&e=Help/UGen/quadC.help.lhs),
-[quadL](?t=hsc3&e=Help/UGen/quadL.help.lhs),
-[quadN](?t=hsc3&e=Help/UGen/quadN.help.lhs),
-[sinOscFB](?t=hsc3&e=Help/UGen/sinOscFB.help.lhs),
-[standardL](?t=hsc3&e=Help/UGen/standardL.help.lhs),
-[standardN](?t=hsc3&e=Help/UGen/standardN.help.lhs)
-
-
-## Generators>Deterministic
-
-[blip](?t=hsc3&e=Help/UGen/blip.help.lhs),
-[cOsc](?t=hsc3&e=Help/UGen/cOsc.help.lhs),
-[dynKlang](?t=hsc3&e=Help/UGen/dynKlang.help.lhs),
-[dynKlank](?t=hsc3&e=Help/UGen/dynKlank.help.lhs),
-[fSinOsc](?t=hsc3&e=Help/UGen/fSinOsc.help.lhs),
-[formant](?t=hsc3&e=Help/UGen/formant.help.lhs),
-[impulse](?t=hsc3&e=Help/UGen/impulse.help.lhs),
-[klang](?t=hsc3&e=Help/UGen/klang.help.lhs),
-[klank](?t=hsc3&e=Help/UGen/klank.help.lhs),
-[lfCub](?t=hsc3&e=Help/UGen/lfCub.help.lhs),
-[lfGauss](?t=hsc3&e=Help/UGen/lfGauss.help.lhs),
-[lfPar](?t=hsc3&e=Help/UGen/lfPar.help.lhs),
-[lfPulse](?t=hsc3&e=Help/UGen/lfPulse.help.lhs),
-[lfSaw](?t=hsc3&e=Help/UGen/lfSaw.help.lhs),
-[lfTri](?t=hsc3&e=Help/UGen/lfTri.help.lhs),
-[osc](?t=hsc3&e=Help/UGen/osc.help.lhs),
-[oscN](?t=hsc3&e=Help/UGen/oscN.help.lhs),
-[pSinGrain](?t=hsc3&e=Help/UGen/pSinGrain.help.lhs),
-[pulse](?t=hsc3&e=Help/UGen/pulse.help.lhs),
-[saw](?t=hsc3&e=Help/UGen/saw.help.lhs),
-[sinOsc](?t=hsc3&e=Help/UGen/sinOsc.help.lhs),
-[sinOscFB](?t=hsc3&e=Help/UGen/sinOscFB.help.lhs),
-[syncSaw](?t=hsc3&e=Help/UGen/syncSaw.help.lhs),
-[vOsc](?t=hsc3&e=Help/UGen/vOsc.help.lhs),
-[vOsc3](?t=hsc3&e=Help/UGen/vOsc3.help.lhs),
-[varSaw](?t=hsc3&e=Help/UGen/varSaw.help.lhs),
-[vibrato](?t=hsc3&e=Help/UGen/vibrato.help.lhs)
-
-
-## Generators>Granular
-
-[grainBuf](?t=hsc3&e=Help/UGen/grainBuf.help.lhs),
-[grainFM](?t=hsc3&e=Help/UGen/grainFM.help.lhs),
-[grainIn](?t=hsc3&e=Help/UGen/grainIn.help.lhs),
-[grainSin](?t=hsc3&e=Help/UGen/grainSin.help.lhs),
-[tGrains](?t=hsc3&e=Help/UGen/tGrains.help.lhs),
-[warp1](?t=hsc3&e=Help/UGen/warp1.help.lhs)
-
-
-## Generators>PhysicalModels
-
-[ball](?t=hsc3&e=Help/UGen/ball.help.lhs),
-[spring](?t=hsc3&e=Help/UGen/spring.help.lhs),
-[tBall](?t=hsc3&e=Help/UGen/tBall.help.lhs)
-
-
-## Generators>Single-value
-
-[dc](?t=hsc3&e=Help/UGen/dc.help.lhs)
-
-
-## Generators>Stochastic
-
-[brownNoise](?t=hsc3&e=Help/UGen/brownNoise.help.lhs),
-[clipNoise](?t=hsc3&e=Help/UGen/clipNoise.help.lhs),
-[coinGate](?t=hsc3&e=Help/UGen/coinGate.help.lhs),
-[crackle](?t=hsc3&e=Help/UGen/crackle.help.lhs),
-[dust](?t=hsc3&e=Help/UGen/dust.help.lhs),
-[dust2](?t=hsc3&e=Help/UGen/dust2.help.lhs),
-[gendy1](?t=hsc3&e=Help/UGen/gendy1.help.lhs),
-[gendy2](?t=hsc3&e=Help/UGen/gendy2.help.lhs),
-[gendy3](?t=hsc3&e=Help/UGen/gendy3.help.lhs),
-[grayNoise](?t=hsc3&e=Help/UGen/grayNoise.help.lhs),
-[lfClipNoise](?t=hsc3&e=Help/UGen/lfClipNoise.help.lhs),
-[lfdClipNoise](?t=hsc3&e=Help/UGen/lfdClipNoise.help.lhs),
-[lfdNoise0](?t=hsc3&e=Help/UGen/lfdNoise0.help.lhs),
-[lfdNoise1](?t=hsc3&e=Help/UGen/lfdNoise1.help.lhs),
-[lfdNoise3](?t=hsc3&e=Help/UGen/lfdNoise3.help.lhs),
-[lfNoise0](?t=hsc3&e=Help/UGen/lfNoise0.help.lhs),
-[lfNoise1](?t=hsc3&e=Help/UGen/lfNoise1.help.lhs),
-[lfNoise2](?t=hsc3&e=Help/UGen/lfNoise2.help.lhs),
-[pinkNoise](?t=hsc3&e=Help/UGen/pinkNoise.help.lhs),
-[randID](?t=hsc3&e=Help/UGen/randID.help.lhs),
-[randSeed](?t=hsc3&e=Help/UGen/randSeed.help.lhs),
-[vibrato](?t=hsc3&e=Help/UGen/vibrato.help.lhs),
-[whiteNoise](?t=hsc3&e=Help/UGen/whiteNoise.help.lhs)
-
-
-## InOut
-
-[diskIn](?t=hsc3&e=Help/UGen/diskIn.help.lhs),
-[diskOut](?t=hsc3&e=Help/UGen/diskOut.help.lhs),
-[in](?t=hsc3&e=Help/UGen/in.help.lhs),
-[inFeedback](?t=hsc3&e=Help/UGen/inFeedback.help.lhs),
-[inTrig](?t=hsc3&e=Help/UGen/inTrig.help.lhs),
-[lagIn](?t=hsc3&e=Help/UGen/lagIn.help.lhs),
-[localIn](?t=hsc3&e=Help/UGen/localIn.help.lhs),
-[localOut](?t=hsc3&e=Help/UGen/localOut.help.lhs),
-[maxLocalBufs](?t=hsc3&e=Help/UGen/maxLocalBufs.help.lhs),
-[offsetOut](?t=hsc3&e=Help/UGen/offsetOut.help.lhs),
-[out](?t=hsc3&e=Help/UGen/out.help.lhs),
-[replaceOut](?t=hsc3&e=Help/UGen/replaceOut.help.lhs),
-[vDiskIn](?t=hsc3&e=Help/UGen/vDiskIn.help.lhs),
-[xOut](?t=hsc3&e=Help/UGen/xOut.help.lhs)
-
-
-## Info
-
-[checkBadValues](?t=hsc3&e=Help/UGen/checkBadValues.help.lhs),
-[controlDur](?t=hsc3&e=Help/UGen/controlDur.help.lhs),
-[controlRate](?t=hsc3&e=Help/UGen/controlRate.help.lhs),
-[dpoll](?t=hsc3&e=Help/UGen/dpoll.help.lhs),
-[numAudioBuses](?t=hsc3&e=Help/UGen/numAudioBuses.help.lhs),
-[numBuffers](?t=hsc3&e=Help/UGen/numBuffers.help.lhs),
-[numControlBuses](?t=hsc3&e=Help/UGen/numControlBuses.help.lhs),
-[numInputBuses](?t=hsc3&e=Help/UGen/numInputBuses.help.lhs),
-[numOutputBuses](?t=hsc3&e=Help/UGen/numOutputBuses.help.lhs),
-[numRunningSynths](?t=hsc3&e=Help/UGen/numRunningSynths.help.lhs),
-[poll](?t=hsc3&e=Help/UGen/poll.help.lhs),
-[radiansPerSample](?t=hsc3&e=Help/UGen/radiansPerSample.help.lhs),
-[sampleDur](?t=hsc3&e=Help/UGen/sampleDur.help.lhs),
-[sampleRate](?t=hsc3&e=Help/UGen/sampleRate.help.lhs),
-[subsampleOffset](?t=hsc3&e=Help/UGen/subsampleOffset.help.lhs)
-
-
-## Maths
-
-[clip](?t=hsc3&e=Help/UGen/clip.help.lhs),
-[fold](?t=hsc3&e=Help/UGen/fold.help.lhs),
-[inRange](?t=hsc3&e=Help/UGen/inRange.help.lhs),
-[inRect](?t=hsc3&e=Help/UGen/inRect.help.lhs),
-[integrator](?t=hsc3&e=Help/UGen/integrator.help.lhs),
-[leastChange](?t=hsc3&e=Help/UGen/leastChange.help.lhs),
-[linExp](?t=hsc3&e=Help/UGen/linExp.help.lhs),
-[modDif](?t=hsc3&e=Help/UGen/modDif.help.lhs),
-[mostChange](?t=hsc3&e=Help/UGen/mostChange.help.lhs),
-[mulAdd](?t=hsc3&e=Help/UGen/mulAdd.help.lhs),
-[runningMax](?t=hsc3&e=Help/UGen/runningMax.help.lhs),
-[runningMin](?t=hsc3&e=Help/UGen/runningMin.help.lhs),
-[runningSum](?t=hsc3&e=Help/UGen/runningSum.help.lhs),
-[schmidt](?t=hsc3&e=Help/UGen/schmidt.help.lhs),
-[slope](?t=hsc3&e=Help/UGen/slope.help.lhs),
-[wrap](?t=hsc3&e=Help/UGen/wrap.help.lhs)
-
-
-## Multichannel>Ambisonics
-
-[biPanB2](?t=hsc3&e=Help/UGen/biPanB2.help.lhs),
-[decodeB2](?t=hsc3&e=Help/UGen/decodeB2.help.lhs),
-[panB](?t=hsc3&e=Help/UGen/panB.help.lhs),
-[panB2](?t=hsc3&e=Help/UGen/panB2.help.lhs),
-[rotate2](?t=hsc3&e=Help/UGen/rotate2.help.lhs)
-
-
-## Multichannel>Panners
-
-[balance2](?t=hsc3&e=Help/UGen/balance2.help.lhs),
-[linPan2](?t=hsc3&e=Help/UGen/linPan2.help.lhs),
-[pan2](?t=hsc3&e=Help/UGen/pan2.help.lhs),
-[pan4](?t=hsc3&e=Help/UGen/pan4.help.lhs),
-[panAz](?t=hsc3&e=Help/UGen/panAz.help.lhs),
-[rotate2](?t=hsc3&e=Help/UGen/rotate2.help.lhs),
-[splay](?t=hsc3&e=Help/UGen/splay.help.lhs),
-[splayAz](?t=hsc3&e=Help/UGen/splayAz.help.lhs)
-
-
-## Multichannel>Select
-
-[linXFade2](?t=hsc3&e=Help/UGen/linXFade2.help.lhs),
-[select](?t=hsc3&e=Help/UGen/select.help.lhs),
-[xFade2](?t=hsc3&e=Help/UGen/xFade2.help.lhs)
-
-
-## Random
-
-[dshuf](?t=hsc3&e=Help/UGen/dshuf.help.lhs),
-[dwrand](?t=hsc3&e=Help/UGen/dwrand.help.lhs),
-[expRand](?t=hsc3&e=Help/UGen/expRand.help.lhs),
-[hasher](?t=hsc3&e=Help/UGen/hasher.help.lhs),
-[iRand](?t=hsc3&e=Help/UGen/iRand.help.lhs),
-[linRand](?t=hsc3&e=Help/UGen/linRand.help.lhs),
-[nRand](?t=hsc3&e=Help/UGen/nRand.help.lhs),
-[rand](?t=hsc3&e=Help/UGen/rand.help.lhs),
-[randID](?t=hsc3&e=Help/UGen/randID.help.lhs),
-[randSeed](?t=hsc3&e=Help/UGen/randSeed.help.lhs),
-[tExpRand](?t=hsc3&e=Help/UGen/tExpRand.help.lhs),
-[tiRand](?t=hsc3&e=Help/UGen/tiRand.help.lhs),
-[tRand](?t=hsc3&e=Help/UGen/tRand.help.lhs),
-[tWindex](?t=hsc3&e=Help/UGen/tWindex.help.lhs)
-
-
-## Reverbs
-
-[freeVerb](?t=hsc3&e=Help/UGen/freeVerb.help.lhs),
-[freeVerb2](?t=hsc3&e=Help/UGen/freeVerb2.help.lhs),
-[gVerb](?t=hsc3&e=Help/UGen/gVerb.help.lhs)
-
-
-## Synth control
-
-[control](?t=hsc3&e=Help/UGen/control.help.lhs),
-[detectSilence](?t=hsc3&e=Help/UGen/detectSilence.help.lhs),
-[done](?t=hsc3&e=Help/UGen/done.help.lhs),
-[free](?t=hsc3&e=Help/UGen/free.help.lhs),
-[freeSelf](?t=hsc3&e=Help/UGen/freeSelf.help.lhs),
-[freeSelfWhenDone](?t=hsc3&e=Help/UGen/freeSelfWhenDone.help.lhs),
-[lagControl](?t=hsc3&e=Help/UGen/lagControl.help.lhs),
-[pause](?t=hsc3&e=Help/UGen/pause.help.lhs),
-[pauseSelf](?t=hsc3&e=Help/UGen/pauseSelf.help.lhs),
-[pauseSelfWhenDone](?t=hsc3&e=Help/UGen/pauseSelfWhenDone.help.lhs),
-[trigControl](?t=hsc3&e=Help/UGen/trigControl.help.lhs)
-
-
-## Triggers
-
-[changed](?t=hsc3&e=Help/UGen/changed.help.lhs),
-[gate](?t=hsc3&e=Help/UGen/gate.help.lhs),
-[inTrig](?t=hsc3&e=Help/UGen/inTrig.help.lhs),
-[lastValue](?t=hsc3&e=Help/UGen/lastValue.help.lhs),
-[latch](?t=hsc3&e=Help/UGen/latch.help.lhs),
-[phasor](?t=hsc3&e=Help/UGen/phasor.help.lhs),
-[pulseCount](?t=hsc3&e=Help/UGen/pulseCount.help.lhs),
-[pulseDivider](?t=hsc3&e=Help/UGen/pulseDivider.help.lhs),
-[sendReply](?t=hsc3&e=Help/UGen/sendReply.help.lhs),
-[sendTrig](?t=hsc3&e=Help/UGen/sendTrig.help.lhs),
-[setResetFF](?t=hsc3&e=Help/UGen/setResetFF.help.lhs),
-[stepper](?t=hsc3&e=Help/UGen/stepper.help.lhs),
-[sweep](?t=hsc3&e=Help/UGen/sweep.help.lhs),
-[t2a](?t=hsc3&e=Help/UGen/t2a.help.lhs),
-[t2k](?t=hsc3&e=Help/UGen/t2k.help.lhs),
-[tDelay](?t=hsc3&e=Help/UGen/tDelay.help.lhs),
-[tExpRand](?t=hsc3&e=Help/UGen/tExpRand.help.lhs),
-[tiRand](?t=hsc3&e=Help/UGen/tiRand.help.lhs),
-[tRand](?t=hsc3&e=Help/UGen/tRand.help.lhs),
-[tWindex](?t=hsc3&e=Help/UGen/tWindex.help.lhs),
-[timer](?t=hsc3&e=Help/UGen/timer.help.lhs),
-[toggleFF](?t=hsc3&e=Help/UGen/toggleFF.help.lhs),
-[trig](?t=hsc3&e=Help/UGen/trig.help.lhs),
-[trig1](?t=hsc3&e=Help/UGen/trig1.help.lhs)
-
-
-## Undocumented
-
-[apf](?t=hsc3&e=Help/UGen/apf.help.lhs),
-[audioControl](?t=hsc3&e=Help/UGen/audioControl.help.lhs),
-[blockSize](?t=hsc3&e=Help/UGen/blockSize.help.lhs),
-[nodeID](?t=hsc3&e=Help/UGen/nodeID.help.lhs),
-[pauseSelfWhenDone](?t=hsc3&e=Help/UGen/pauseSelfWhenDone.help.lhs),
-[scopeOut](?t=hsc3&e=Help/UGen/scopeOut.help.lhs),
-[scopeOut2](?t=hsc3&e=Help/UGen/scopeOut2.help.lhs),
-[trigControl](?t=hsc3&e=Help/UGen/trigControl.help.lhs)
-
-
-## User interaction
-
-[keyState](?t=hsc3&e=Help/UGen/keyState.help.lhs),
-[mouseButton](?t=hsc3&e=Help/UGen/mouseButton.help.lhs),
-[mouseX](?t=hsc3&e=Help/UGen/mouseX.help.lhs),
-[mouseY](?t=hsc3&e=Help/UGen/mouseY.help.lhs)
-
-
-## Operator>Binary
-
-[add](?t=hsc3&e=Help/UGen/add.help.lhs),
-[sub](?t=hsc3&e=Help/UGen/sub.help.lhs),
-[mul](?t=hsc3&e=Help/UGen/mul.help.lhs),
-[iDiv](?t=hsc3&e=Help/UGen/iDiv.help.lhs),
-[fDiv](?t=hsc3&e=Help/UGen/fDiv.help.lhs),
-[mod](?t=hsc3&e=Help/UGen/mod.help.lhs),
-[eq](?t=hsc3&e=Help/UGen/eq.help.lhs),
-[ne](?t=hsc3&e=Help/UGen/ne.help.lhs),
-[lt](?t=hsc3&e=Help/UGen/lt.help.lhs),
-[gt](?t=hsc3&e=Help/UGen/gt.help.lhs),
-[le](?t=hsc3&e=Help/UGen/le.help.lhs),
-[ge](?t=hsc3&e=Help/UGen/ge.help.lhs),
-[min](?t=hsc3&e=Help/UGen/min.help.lhs),
-[max](?t=hsc3&e=Help/UGen/max.help.lhs),
-[bitAnd](?t=hsc3&e=Help/UGen/bitAnd.help.lhs),
-[bitOr](?t=hsc3&e=Help/UGen/bitOr.help.lhs),
-[bitXor](?t=hsc3&e=Help/UGen/bitXor.help.lhs),
-[lcm](?t=hsc3&e=Help/UGen/lcm.help.lhs),
-[gcd](?t=hsc3&e=Help/UGen/gcd.help.lhs),
-[round](?t=hsc3&e=Help/UGen/round.help.lhs),
-[roundUp](?t=hsc3&e=Help/UGen/roundUp.help.lhs),
-[trunc](?t=hsc3&e=Help/UGen/trunc.help.lhs),
-[atan2](?t=hsc3&e=Help/UGen/atan2.help.lhs),
-[hypot](?t=hsc3&e=Help/UGen/hypot.help.lhs),
-[hypotx](?t=hsc3&e=Help/UGen/hypotx.help.lhs),
-[pow](?t=hsc3&e=Help/UGen/pow.help.lhs),
-[shiftLeft](?t=hsc3&e=Help/UGen/shiftLeft.help.lhs),
-[shiftRight](?t=hsc3&e=Help/UGen/shiftRight.help.lhs),
-[unsignedShift](?t=hsc3&e=Help/UGen/unsignedShift.help.lhs),
-[fill](?t=hsc3&e=Help/UGen/fill.help.lhs),
-[ring1](?t=hsc3&e=Help/UGen/ring1.help.lhs),
-[ring2](?t=hsc3&e=Help/UGen/ring2.help.lhs),
-[ring3](?t=hsc3&e=Help/UGen/ring3.help.lhs),
-[ring4](?t=hsc3&e=Help/UGen/ring4.help.lhs),
-[difSqr](?t=hsc3&e=Help/UGen/difSqr.help.lhs),
-[sumSqr](?t=hsc3&e=Help/UGen/sumSqr.help.lhs),
-[sqrSum](?t=hsc3&e=Help/UGen/sqrSum.help.lhs),
-[sqrDif](?t=hsc3&e=Help/UGen/sqrDif.help.lhs),
-[absDif](?t=hsc3&e=Help/UGen/absDif.help.lhs),
-[thresh](?t=hsc3&e=Help/UGen/thresh.help.lhs),
-[amClip](?t=hsc3&e=Help/UGen/amClip.help.lhs),
-[scaleNeg](?t=hsc3&e=Help/UGen/scaleNeg.help.lhs),
-[clip2](?t=hsc3&e=Help/UGen/clip2.help.lhs),
-[excess](?t=hsc3&e=Help/UGen/excess.help.lhs),
-[fold2](?t=hsc3&e=Help/UGen/fold2.help.lhs),
-[wrap2](?t=hsc3&e=Help/UGen/wrap2.help.lhs),
-[firstArg](?t=hsc3&e=Help/UGen/firstArg.help.lhs),
-[randRange](?t=hsc3&e=Help/UGen/randRange.help.lhs),
-[expRandRange](?t=hsc3&e=Help/UGen/expRandRange.help.lhs)
-
-
-## Operator>Unary
-
-[neg](?t=hsc3&e=Help/UGen/neg.help.lhs),
-[not](?t=hsc3&e=Help/UGen/not.help.lhs),
-[isNil](?t=hsc3&e=Help/UGen/isNil.help.lhs),
-[notNil](?t=hsc3&e=Help/UGen/notNil.help.lhs),
-[bitNot](?t=hsc3&e=Help/UGen/bitNot.help.lhs),
-[abs](?t=hsc3&e=Help/UGen/abs.help.lhs),
-[asFloat](?t=hsc3&e=Help/UGen/asFloat.help.lhs),
-[asInt](?t=hsc3&e=Help/UGen/asInt.help.lhs),
-[ceil](?t=hsc3&e=Help/UGen/ceil.help.lhs),
-[floor](?t=hsc3&e=Help/UGen/floor.help.lhs),
-[frac](?t=hsc3&e=Help/UGen/frac.help.lhs),
-[sign](?t=hsc3&e=Help/UGen/sign.help.lhs),
-[squared](?t=hsc3&e=Help/UGen/squared.help.lhs),
-[cubed](?t=hsc3&e=Help/UGen/cubed.help.lhs),
-[sqrt](?t=hsc3&e=Help/UGen/sqrt.help.lhs),
-[exp](?t=hsc3&e=Help/UGen/exp.help.lhs),
-[recip](?t=hsc3&e=Help/UGen/recip.help.lhs),
-[midicps](?t=hsc3&e=Help/UGen/midicps.help.lhs),
-[cpsmidi](?t=hsc3&e=Help/UGen/cpsmidi.help.lhs),
-[midiRatio](?t=hsc3&e=Help/UGen/midiRatio.help.lhs),
-[ratioMIDI](?t=hsc3&e=Help/UGen/ratioMIDI.help.lhs),
-[dbAmp](?t=hsc3&e=Help/UGen/dbAmp.help.lhs),
-[ampDb](?t=hsc3&e=Help/UGen/ampDb.help.lhs),
-[octCPS](?t=hsc3&e=Help/UGen/octCPS.help.lhs),
-[cpsOct](?t=hsc3&e=Help/UGen/cpsOct.help.lhs),
-[log](?t=hsc3&e=Help/UGen/log.help.lhs),
-[log2](?t=hsc3&e=Help/UGen/log2.help.lhs),
-[log10](?t=hsc3&e=Help/UGen/log10.help.lhs),
-[sin](?t=hsc3&e=Help/UGen/sin.help.lhs),
-[cos](?t=hsc3&e=Help/UGen/cos.help.lhs),
-[tan](?t=hsc3&e=Help/UGen/tan.help.lhs),
-[arcSin](?t=hsc3&e=Help/UGen/arcSin.help.lhs),
-[arcCos](?t=hsc3&e=Help/UGen/arcCos.help.lhs),
-[arcTan](?t=hsc3&e=Help/UGen/arcTan.help.lhs),
-[sinH](?t=hsc3&e=Help/UGen/sinH.help.lhs),
-[cosH](?t=hsc3&e=Help/UGen/cosH.help.lhs),
-[tanH](?t=hsc3&e=Help/UGen/tanH.help.lhs),
-[rand_](?t=hsc3&e=Help/UGen/rand_.help.lhs),
-[rand2](?t=hsc3&e=Help/UGen/rand2.help.lhs),
-[linRand_](?t=hsc3&e=Help/UGen/linRand_.help.lhs),
-[biLinRand](?t=hsc3&e=Help/UGen/biLinRand.help.lhs),
-[sum3Rand](?t=hsc3&e=Help/UGen/sum3Rand.help.lhs),
-[distort](?t=hsc3&e=Help/UGen/distort.help.lhs),
-[softClip](?t=hsc3&e=Help/UGen/softClip.help.lhs),
-[coin](?t=hsc3&e=Help/UGen/coin.help.lhs),
-[digitValue](?t=hsc3&e=Help/UGen/digitValue.help.lhs),
-[silence](?t=hsc3&e=Help/UGen/silence.help.lhs),
-[thru](?t=hsc3&e=Help/UGen/thru.help.lhs),
-[rectWindow](?t=hsc3&e=Help/UGen/rectWindow.help.lhs),
-[hanWindow](?t=hsc3&e=Help/UGen/hanWindow.help.lhs),
-[welchWindow](?t=hsc3&e=Help/UGen/welchWindow.help.lhs),
-[triWindow](?t=hsc3&e=Help/UGen/triWindow.help.lhs),
-[ramp_](?t=hsc3&e=Help/UGen/ramp_.help.lhs),
-[sCurve](?t=hsc3&e=Help/UGen/sCurve.help.lhs)
+[sum3](?t=hsc3&e=Help/UGen/sum3.help.hs),
+[sum4](?t=hsc3&e=Help/UGen/sum4.help.hs)
+
+
+
+## Analisys
+[sonLPC](?t=hsc3&e=Help/UGen/sonLPC.help.hs)
+
+
+
+## Analysis
+[beatTrack](?t=hsc3&e=Help/UGen/beatTrack.help.hs),
+beatTrack2,
+mfcc,
+[onsets](?t=hsc3&e=Help/UGen/onsets.help.hs),
+[runningSum](?t=hsc3&e=Help/UGen/runningSum.help.hs),
+[slope](?t=hsc3&e=Help/UGen/slope.help.hs),
+analyseEvents2,
+[arrayMax](?t=hsc3&e=Help/UGen/arrayMax.help.hs),
+[arrayMin](?t=hsc3&e=Help/UGen/arrayMin.help.hs),
+attackSlope,
+averageOutput,
+beatStatistics,
+bufMax,
+bufMin,
+[chromagram](?t=hsc3&e=Help/UGen/chromagram.help.hs),
+[coyote](?t=hsc3&e=Help/UGen/coyote.help.hs),
+[crest](?t=hsc3&e=Help/UGen/crest.help.hs),
+drumTrack,
+[envDetect](?t=hsc3&e=Help/UGen/envDetect.help.hs),
+[envFollow](?t=hsc3&e=Help/UGen/envFollow.help.hs),
+fftComplexDev,
+fftCrest,
+fftDiffMags,
+fftFlux,
+fftFluxPos,
+fftmkl,
+fftPeak,
+fftPhaseDev,
+fftPower,
+fftSlope,
+fftSpread,
+fftSubbandFlatness,
+fftSubbandFlux,
+fftSubbandPower,
+featureSave,
+frameCompare,
+[gammatone](?t=hsc3&e=Help/UGen/gammatone.help.hs),
+[hairCell](?t=hsc3&e=Help/UGen/hairCell.help.hs),
+kMeansRT,
+[lpcAnalyzer](?t=hsc3&e=Help/UGen/lpcAnalyzer.help.hs),
+lpcError,
+matchingP,
+matchingPResynth,
+[max](?t=hsc3&e=Help/UGen/max.help.hs),
+[meddis](?t=hsc3&e=Help/UGen/meddis.help.hs),
+medianSeparation,
+nearestN,
+onsetStatistics,
+pv_ExtractRepeat,
+pv_MagExp,
+pv_MagLog,
+pv_MagSmooth,
+pv_Whiten,
+slOnset,
+[sms](?t=hsc3&e=Help/UGen/sms.help.hs),
+somRd,
+somTrain,
+[sensoryDissonance](?t=hsc3&e=Help/UGen/sensoryDissonance.help.hs),
+[spectralEntropy](?t=hsc3&e=Help/UGen/spectralEntropy.help.hs),
+tpv,
+[trigAvg](?t=hsc3&e=Help/UGen/trigAvg.help.hs),
+walshHadamard,
+waveletDaub
+
+
+## Analysis:Amplitude
+[ampComp](?t=hsc3&e=Help/UGen/ampComp.help.hs),
+ampCompA,
+[amplitude](?t=hsc3&e=Help/UGen/amplitude.help.hs),
+[detectSilence](?t=hsc3&e=Help/UGen/detectSilence.help.hs),
+[loudness](?t=hsc3&e=Help/UGen/loudness.help.hs),
+[peak](?t=hsc3&e=Help/UGen/peak.help.hs),
+[peakFollower](?t=hsc3&e=Help/UGen/peakFollower.help.hs),
+sendPeakRMS,
+amplitudeMod,
+rms,
+wAmp
+
+
+## Analysis:Pitch
+[keyTrack](?t=hsc3&e=Help/UGen/keyTrack.help.hs),
+[pitch](?t=hsc3&e=Help/UGen/pitch.help.hs),
+[zeroCrossing](?t=hsc3&e=Help/UGen/zeroCrossing.help.hs),
+keyClarity,
+keyMode,
+pitchTracker,
+qitch,
+[tartini](?t=hsc3&e=Help/UGen/tartini.help.hs)
+
+
+
+## Analysis:Synthesis
+atsAmp,
+atsFreq,
+atsNoiSynth,
+atsNoise,
+atsParInfo,
+atsPartial,
+atsSynth,
+atsUGen,
+lpcSynth,
+lpcVals,
+maxamp
+
+
+
+## Buffer
+[bufRd](?t=hsc3&e=Help/UGen/bufRd.help.hs),
+[bufWr](?t=hsc3&e=Help/UGen/bufWr.help.hs),
+[dbufrd](?t=hsc3&e=Help/UGen/dbufrd.help.hs),
+[dbufwr](?t=hsc3&e=Help/UGen/dbufwr.help.hs),
+delTapRd,
+[delTapWr](?t=hsc3&e=Help/UGen/delTapWr.help.hs),
+[detectIndex](?t=hsc3&e=Help/UGen/detectIndex.help.hs),
+[diskIn](?t=hsc3&e=Help/UGen/diskIn.help.hs),
+diskOut,
+[grainBuf](?t=hsc3&e=Help/UGen/grainBuf.help.hs),
+[index](?t=hsc3&e=Help/UGen/index.help.hs),
+[indexInBetween](?t=hsc3&e=Help/UGen/indexInBetween.help.hs),
+[indexL](?t=hsc3&e=Help/UGen/indexL.help.hs),
+[localBuf](?t=hsc3&e=Help/UGen/localBuf.help.hs),
+[phasor](?t=hsc3&e=Help/UGen/phasor.help.hs),
+[playBuf](?t=hsc3&e=Help/UGen/playBuf.help.hs),
+[recordBuf](?t=hsc3&e=Help/UGen/recordBuf.help.hs),
+[shaper](?t=hsc3&e=Help/UGen/shaper.help.hs),
+[tGrains](?t=hsc3&e=Help/UGen/tGrains.help.hs),
+[tap](?t=hsc3&e=Help/UGen/tap.help.hs),
+[vDiskIn](?t=hsc3&e=Help/UGen/vDiskIn.help.hs),
+[warp1](?t=hsc3&e=Help/UGen/warp1.help.hs),
+[wrapIndex](?t=hsc3&e=Help/UGen/wrapIndex.help.hs),
+listTrig,
+listTrig2,
+logger,
+[loopBuf](?t=hsc3&e=Help/UGen/loopBuf.help.hs),
+matchingPResynth,
+[miClouds](?t=hsc3&e=Help/UGen/miClouds.help.hs),
+sortBuf,
+tGrains2,
+tGrains3,
+vmScan2D,
+waveTerrain
+
+
+## Buffer:Info
+[bufChannels](?t=hsc3&e=Help/UGen/bufChannels.help.hs),
+[bufDur](?t=hsc3&e=Help/UGen/bufDur.help.hs),
+[bufFrames](?t=hsc3&e=Help/UGen/bufFrames.help.hs),
+[bufRateScale](?t=hsc3&e=Help/UGen/bufRateScale.help.hs),
+[bufSampleRate](?t=hsc3&e=Help/UGen/bufSampleRate.help.hs),
+bufSamples
+
+
+
+## Conversion
+a2k,
+[degreeToKey](?t=hsc3&e=Help/UGen/degreeToKey.help.hs),
+[k2a](?t=hsc3&e=Help/UGen/k2a.help.hs),
+[t2a](?t=hsc3&e=Help/UGen/t2a.help.hs),
+[t2k](?t=hsc3&e=Help/UGen/t2k.help.hs)
+
+
+
+## Convolution
+[convolution](?t=hsc3&e=Help/UGen/convolution.help.hs),
+convolution2,
+convolution2L,
+convolution3,
+partConv,
+stereoConvolution2L,
+partConvT
+
+
+
+## Delays
+[allpassC](?t=hsc3&e=Help/UGen/allpassC.help.hs),
+[allpassL](?t=hsc3&e=Help/UGen/allpassL.help.hs),
+[allpassN](?t=hsc3&e=Help/UGen/allpassN.help.hs),
+[combC](?t=hsc3&e=Help/UGen/combC.help.hs),
+[combL](?t=hsc3&e=Help/UGen/combL.help.hs),
+[combN](?t=hsc3&e=Help/UGen/combN.help.hs),
+delTapRd,
+[delTapWr](?t=hsc3&e=Help/UGen/delTapWr.help.hs),
+[delay1](?t=hsc3&e=Help/UGen/delay1.help.hs),
+[delay2](?t=hsc3&e=Help/UGen/delay2.help.hs),
+[delayC](?t=hsc3&e=Help/UGen/delayC.help.hs),
+[delayL](?t=hsc3&e=Help/UGen/delayL.help.hs),
+[delayN](?t=hsc3&e=Help/UGen/delayN.help.hs),
+[pluck](?t=hsc3&e=Help/UGen/pluck.help.hs),
+[tDelay](?t=hsc3&e=Help/UGen/tDelay.help.hs),
+doubleNestedAllpassC,
+doubleNestedAllpassL,
+doubleNestedAllpassN,
+[greyholeRaw](?t=hsc3&e=Help/UGen/greyholeRaw.help.hs),
+[nestedAllpassC](?t=hsc3&e=Help/UGen/nestedAllpassC.help.hs),
+nestedAllpassL,
+nestedAllpassN,
+[switchDelay](?t=hsc3&e=Help/UGen/switchDelay.help.hs)
+
+
+## Delays:Buffer
+[bufAllpassC](?t=hsc3&e=Help/UGen/bufAllpassC.help.hs),
+[bufAllpassL](?t=hsc3&e=Help/UGen/bufAllpassL.help.hs),
+[bufAllpassN](?t=hsc3&e=Help/UGen/bufAllpassN.help.hs),
+[bufCombC](?t=hsc3&e=Help/UGen/bufCombC.help.hs),
+[bufCombL](?t=hsc3&e=Help/UGen/bufCombL.help.hs),
+[bufCombN](?t=hsc3&e=Help/UGen/bufCombN.help.hs),
+[bufDelayC](?t=hsc3&e=Help/UGen/bufDelayC.help.hs),
+[bufDelayL](?t=hsc3&e=Help/UGen/bufDelayL.help.hs),
+[bufDelayN](?t=hsc3&e=Help/UGen/bufDelayN.help.hs),
+[tap](?t=hsc3&e=Help/UGen/tap.help.hs)
+
+
+
+## Demand
+[dbrown](?t=hsc3&e=Help/UGen/dbrown.help.hs),
+[dbufrd](?t=hsc3&e=Help/UGen/dbufrd.help.hs),
+[dbufwr](?t=hsc3&e=Help/UGen/dbufwr.help.hs),
+[dconst](?t=hsc3&e=Help/UGen/dconst.help.hs),
+[demand](?t=hsc3&e=Help/UGen/demand.help.hs),
+[demandEnvGen](?t=hsc3&e=Help/UGen/demandEnvGen.help.hs),
+[dgeom](?t=hsc3&e=Help/UGen/dgeom.help.hs),
+[dibrown](?t=hsc3&e=Help/UGen/dibrown.help.hs),
+[diwhite](?t=hsc3&e=Help/UGen/diwhite.help.hs),
+dpoll,
+[drand](?t=hsc3&e=Help/UGen/drand.help.hs),
+dreset,
+[dseq](?t=hsc3&e=Help/UGen/dseq.help.hs),
+[dser](?t=hsc3&e=Help/UGen/dser.help.hs),
+[dseries](?t=hsc3&e=Help/UGen/dseries.help.hs),
+[dshuf](?t=hsc3&e=Help/UGen/dshuf.help.hs),
+[dstutter](?t=hsc3&e=Help/UGen/dstutter.help.hs),
+[dswitch](?t=hsc3&e=Help/UGen/dswitch.help.hs),
+[dswitch1](?t=hsc3&e=Help/UGen/dswitch1.help.hs),
+dunique,
+[duty](?t=hsc3&e=Help/UGen/duty.help.hs),
+[dwhite](?t=hsc3&e=Help/UGen/dwhite.help.hs),
+[dwrand](?t=hsc3&e=Help/UGen/dwrand.help.hs),
+[dxrand](?t=hsc3&e=Help/UGen/dxrand.help.hs),
+[tDuty](?t=hsc3&e=Help/UGen/tDuty.help.hs),
+unpack1FFT,
+unpackFFT,
+[dNoiseRing](?t=hsc3&e=Help/UGen/dNoiseRing.help.hs),
+dbrown2,
+dbufTag,
+detaBlockerBuf,
+dfsm,
+[dneuromodule](?t=hsc3&e=Help/UGen/dneuromodule.help.hs),
+dtag
+
+
+
+## Drums
+[analogBassDrum](?t=hsc3&e=Help/UGen/analogBassDrum.help.hs),
+[analogSnareDrum](?t=hsc3&e=Help/UGen/analogSnareDrum.help.hs)
+
+
+
+## Dynamics
+[compander](?t=hsc3&e=Help/UGen/compander.help.hs),
+companderD,
+[limiter](?t=hsc3&e=Help/UGen/limiter.help.hs),
+[normalizer](?t=hsc3&e=Help/UGen/normalizer.help.hs),
+dCompressor
+
+
+
+## Env
+[miTides](?t=hsc3&e=Help/UGen/miTides.help.hs)
+
+
+
+## Envelopes
+[decay](?t=hsc3&e=Help/UGen/decay.help.hs),
+[decay2](?t=hsc3&e=Help/UGen/decay2.help.hs),
+[demandEnvGen](?t=hsc3&e=Help/UGen/demandEnvGen.help.hs),
+[envGen](?t=hsc3&e=Help/UGen/envGen.help.hs),
+[iEnvGen](?t=hsc3&e=Help/UGen/iEnvGen.help.hs),
+[line](?t=hsc3&e=Help/UGen/line.help.hs),
+[linen](?t=hsc3&e=Help/UGen/linen.help.hs),
+[xLine](?t=hsc3&e=Help/UGen/xLine.help.hs)
+
+
+
+## FFT
+[beatTrack](?t=hsc3&e=Help/UGen/beatTrack.help.hs),
+beatTrack2,
+[convolution](?t=hsc3&e=Help/UGen/convolution.help.hs),
+convolution2,
+convolution2L,
+[fft](?t=hsc3&e=Help/UGen/fft.help.hs),
+[fftTrigger](?t=hsc3&e=Help/UGen/fftTrigger.help.hs),
+[ifft](?t=hsc3&e=Help/UGen/ifft.help.hs),
+pv_Add,
+[pv_BinScramble](?t=hsc3&e=Help/UGen/pv_BinScramble.help.hs),
+[pv_BinShift](?t=hsc3&e=Help/UGen/pv_BinShift.help.hs),
+[pv_BinWipe](?t=hsc3&e=Help/UGen/pv_BinWipe.help.hs),
+[pv_BrickWall](?t=hsc3&e=Help/UGen/pv_BrickWall.help.hs),
+pv_ChainUGen,
+[pv_ConformalMap](?t=hsc3&e=Help/UGen/pv_ConformalMap.help.hs),
+pv_Conj,
+pv_Copy,
+pv_CopyPhase,
+[pv_Diffuser](?t=hsc3&e=Help/UGen/pv_Diffuser.help.hs),
+pv_Div,
+[pv_HainsworthFoote](?t=hsc3&e=Help/UGen/pv_HainsworthFoote.help.hs),
+[pv_JensenAndersen](?t=hsc3&e=Help/UGen/pv_JensenAndersen.help.hs),
+[pv_LocalMax](?t=hsc3&e=Help/UGen/pv_LocalMax.help.hs),
+[pv_MagAbove](?t=hsc3&e=Help/UGen/pv_MagAbove.help.hs),
+[pv_MagBelow](?t=hsc3&e=Help/UGen/pv_MagBelow.help.hs),
+[pv_MagClip](?t=hsc3&e=Help/UGen/pv_MagClip.help.hs),
+pv_MagDiv,
+[pv_MagFreeze](?t=hsc3&e=Help/UGen/pv_MagFreeze.help.hs),
+[pv_MagMul](?t=hsc3&e=Help/UGen/pv_MagMul.help.hs),
+pv_MagNoise,
+pv_MagShift,
+[pv_MagSmear](?t=hsc3&e=Help/UGen/pv_MagSmear.help.hs),
+pv_MagSquared,
+pv_Max,
+pv_Min,
+[pv_Mul](?t=hsc3&e=Help/UGen/pv_Mul.help.hs),
+pv_PhaseShift,
+pv_PhaseShift270,
+pv_PhaseShift90,
+[pv_RandComb](?t=hsc3&e=Help/UGen/pv_RandComb.help.hs),
+[pv_RandWipe](?t=hsc3&e=Help/UGen/pv_RandWipe.help.hs),
+[pv_RectComb](?t=hsc3&e=Help/UGen/pv_RectComb.help.hs),
+pv_RectComb2,
+[packFFT](?t=hsc3&e=Help/UGen/packFFT.help.hs),
+partConv,
+[specCentroid](?t=hsc3&e=Help/UGen/specCentroid.help.hs),
+[specFlatness](?t=hsc3&e=Help/UGen/specFlatness.help.hs),
+specPcile,
+stereoConvolution2L,
+unpack1FFT,
+unpackFFT,
+cepstrum,
+fftComplexDev,
+fftCrest,
+fftDiffMags,
+fftFlux,
+fftFluxPos,
+fftmkl,
+fftPeak,
+fftPhaseDev,
+fftPower,
+fftSlope,
+fftSpread,
+fftSubbandFlatness,
+fftSubbandFlux,
+fftSubbandPower,
+frameCompare,
+iCepstrum,
+medianSeparation,
+pvInfo,
+pvSynth,
+[pv_BinBufRd](?t=hsc3&e=Help/UGen/pv_BinBufRd.help.hs),
+pv_BinDelay,
+pv_BinPlayBuf,
+[pv_BufRd](?t=hsc3&e=Help/UGen/pv_BufRd.help.hs),
+pv_CommonMag,
+pv_CommonMul,
+[pv_Compander](?t=hsc3&e=Help/UGen/pv_Compander.help.hs),
+pv_Cutoff,
+pv_EvenBin,
+pv_ExtractRepeat,
+[pv_Freeze](?t=hsc3&e=Help/UGen/pv_Freeze.help.hs),
+pv_FreqBuffer,
+[pv_Invert](?t=hsc3&e=Help/UGen/pv_Invert.help.hs),
+pv_MagBuffer,
+pv_MagExp,
+[pv_MagGate](?t=hsc3&e=Help/UGen/pv_MagGate.help.hs),
+pv_MagLog,
+pv_MagMap,
+pv_MagMinus,
+pv_MagMulAdd,
+pv_MagSmooth,
+pv_MaxMagN,
+pv_MinMagN,
+[pv_Morph](?t=hsc3&e=Help/UGen/pv_Morph.help.hs),
+pv_NoiseSynthF,
+pv_NoiseSynthP,
+pv_OddBin,
+pv_PartialSynthF,
+pv_PartialSynthP,
+[pv_PlayBuf](?t=hsc3&e=Help/UGen/pv_PlayBuf.help.hs),
+[pv_RecordBuf](?t=hsc3&e=Help/UGen/pv_RecordBuf.help.hs),
+pv_SoftWipe,
+pv_SpectralEnhance,
+[pv_SpectralMap](?t=hsc3&e=Help/UGen/pv_SpectralMap.help.hs),
+pv_Whiten,
+[pv_xFade](?t=hsc3&e=Help/UGen/pv_xFade.help.hs),
+partConvT,
+tpv,
+vbpVoc
+
+
+
+## Filter
+[miElements](?t=hsc3&e=Help/UGen/miElements.help.hs),
+miMu,
+[miRings](?t=hsc3&e=Help/UGen/miRings.help.hs),
+[miRipples](?t=hsc3&e=Help/UGen/miRipples.help.hs)
+
+
+
+## Filters
+lag2UD,
+lag3UD,
+[lagUD](?t=hsc3&e=Help/UGen/lagUD.help.hs),
+[moogFF](?t=hsc3&e=Help/UGen/moogFF.help.hs),
+allpass1,
+allpass2,
+[bMoog](?t=hsc3&e=Help/UGen/bMoog.help.hs),
+[crossoverDistortion](?t=hsc3&e=Help/UGen/crossoverDistortion.help.hs),
+[dfm1](?t=hsc3&e=Help/UGen/dfm1.help.hs),
+decimator,
+[diodeRingMod](?t=hsc3&e=Help/UGen/diodeRingMod.help.hs),
+[disintegrator](?t=hsc3&e=Help/UGen/disintegrator.help.hs),
+[friction](?t=hsc3&e=Help/UGen/friction.help.hs),
+[gammatone](?t=hsc3&e=Help/UGen/gammatone.help.hs),
+goertzel,
+[hairCell](?t=hsc3&e=Help/UGen/hairCell.help.hs),
+[iirFilter](?t=hsc3&e=Help/UGen/iirFilter.help.hs),
+insideOut,
+[lpg](?t=hsc3&e=Help/UGen/lpg.help.hs),
+[lti](?t=hsc3&e=Help/UGen/lti.help.hs),
+meanTriggered,
+[meddis](?t=hsc3&e=Help/UGen/meddis.help.hs),
+medianTriggered,
+[moogLadder](?t=hsc3&e=Help/UGen/moogLadder.help.hs),
+[moogVCF](?t=hsc3&e=Help/UGen/moogVCF.help.hs),
+nl,
+nl2,
+nlFiltC,
+nlFiltL,
+nlFiltN,
+[rlpfd](?t=hsc3&e=Help/UGen/rlpfd.help.hs),
+[rmeq](?t=hsc3&e=Help/UGen/rmeq.help.hs),
+rmeqSuite,
+[rmShelf](?t=hsc3&e=Help/UGen/rmShelf.help.hs),
+rmShelf2,
+regaliaMitraEQ,
+[svf](?t=hsc3&e=Help/UGen/svf.help.hs),
+[sineShaper](?t=hsc3&e=Help/UGen/sineShaper.help.hs),
+smoothDecimator,
+[streson](?t=hsc3&e=Help/UGen/streson.help.hs)
+
+
+## Filters:BEQSuite
+[bAllPass](?t=hsc3&e=Help/UGen/bAllPass.help.hs),
+[bBandPass](?t=hsc3&e=Help/UGen/bBandPass.help.hs),
+[bBandStop](?t=hsc3&e=Help/UGen/bBandStop.help.hs),
+[bHiPass](?t=hsc3&e=Help/UGen/bHiPass.help.hs),
+[bHiShelf](?t=hsc3&e=Help/UGen/bHiShelf.help.hs),
+[bLowPass](?t=hsc3&e=Help/UGen/bLowPass.help.hs),
+[bLowShelf](?t=hsc3&e=Help/UGen/bLowShelf.help.hs),
+[bPeakEQ](?t=hsc3&e=Help/UGen/bPeakEQ.help.hs)
+
+
+## Filters:GlitchUGens
+glitchBPF,
+glitchBRF,
+glitchHPF,
+glitchRHPF
+
+
+## Filters:Linear
+apf,
+[bpf](?t=hsc3&e=Help/UGen/bpf.help.hs),
+[bpz2](?t=hsc3&e=Help/UGen/bpz2.help.hs),
+[brf](?t=hsc3&e=Help/UGen/brf.help.hs),
+[brz2](?t=hsc3&e=Help/UGen/brz2.help.hs),
+[changed](?t=hsc3&e=Help/UGen/changed.help.hs),
+[decay](?t=hsc3&e=Help/UGen/decay.help.hs),
+[decay2](?t=hsc3&e=Help/UGen/decay2.help.hs),
+[dynKlank](?t=hsc3&e=Help/UGen/dynKlank.help.hs),
+[fos](?t=hsc3&e=Help/UGen/fos.help.hs),
+[formlet](?t=hsc3&e=Help/UGen/formlet.help.hs),
+[hpf](?t=hsc3&e=Help/UGen/hpf.help.hs),
+[hpz1](?t=hsc3&e=Help/UGen/hpz1.help.hs),
+[hpz2](?t=hsc3&e=Help/UGen/hpz2.help.hs),
+[integrator](?t=hsc3&e=Help/UGen/integrator.help.hs),
+[klank](?t=hsc3&e=Help/UGen/klank.help.hs),
+[lpf](?t=hsc3&e=Help/UGen/lpf.help.hs),
+[lpz1](?t=hsc3&e=Help/UGen/lpz1.help.hs),
+[lpz2](?t=hsc3&e=Help/UGen/lpz2.help.hs),
+[lag](?t=hsc3&e=Help/UGen/lag.help.hs),
+[lag2](?t=hsc3&e=Help/UGen/lag2.help.hs),
+[lag3](?t=hsc3&e=Help/UGen/lag3.help.hs),
+[leakDC](?t=hsc3&e=Help/UGen/leakDC.help.hs),
+[midEQ](?t=hsc3&e=Help/UGen/midEQ.help.hs),
+[onePole](?t=hsc3&e=Help/UGen/onePole.help.hs),
+[oneZero](?t=hsc3&e=Help/UGen/oneZero.help.hs),
+[rhpf](?t=hsc3&e=Help/UGen/rhpf.help.hs),
+[rlpf](?t=hsc3&e=Help/UGen/rlpf.help.hs),
+[ramp](?t=hsc3&e=Help/UGen/ramp.help.hs),
+[resonz](?t=hsc3&e=Help/UGen/resonz.help.hs),
+[ringz](?t=hsc3&e=Help/UGen/ringz.help.hs),
+[sos](?t=hsc3&e=Help/UGen/sos.help.hs),
+[slope](?t=hsc3&e=Help/UGen/slope.help.hs),
+[twoPole](?t=hsc3&e=Help/UGen/twoPole.help.hs),
+[twoZero](?t=hsc3&e=Help/UGen/twoZero.help.hs),
+[varLag](?t=hsc3&e=Help/UGen/varLag.help.hs),
+[circleRamp](?t=hsc3&e=Help/UGen/circleRamp.help.hs),
+[complexRes](?t=hsc3&e=Help/UGen/complexRes.help.hs),
+glitchBPF,
+glitchBRF,
+glitchHPF,
+glitchRHPF
+
+
+## Filters:Nonlinear
+ball,
+[freqShift](?t=hsc3&e=Help/UGen/freqShift.help.hs),
+[hasher](?t=hsc3&e=Help/UGen/hasher.help.hs),
+[hilbert](?t=hsc3&e=Help/UGen/hilbert.help.hs),
+[hilbertFIR](?t=hsc3&e=Help/UGen/hilbertFIR.help.hs),
+[mantissaMask](?t=hsc3&e=Help/UGen/mantissaMask.help.hs),
+[median](?t=hsc3&e=Help/UGen/median.help.hs),
+[slew](?t=hsc3&e=Help/UGen/slew.help.hs),
+[spring](?t=hsc3&e=Help/UGen/spring.help.hs),
+[tBall](?t=hsc3&e=Help/UGen/tBall.help.hs),
+[membraneCircle](?t=hsc3&e=Help/UGen/membraneCircle.help.hs),
+membraneCircleV,
+[membraneHexagon](?t=hsc3&e=Help/UGen/membraneHexagon.help.hs),
+membraneHexagonV,
+[squiz](?t=hsc3&e=Help/UGen/squiz.help.hs),
+waveLoss
+
+
+## Filters:Pitch
+[freqShift](?t=hsc3&e=Help/UGen/freqShift.help.hs),
+[pitchShift](?t=hsc3&e=Help/UGen/pitchShift.help.hs),
+[vibrato](?t=hsc3&e=Help/UGen/vibrato.help.hs)
+
+
+## Filters:linear
+[lores](?t=hsc3&e=Help/UGen/lores.help.hs)
+
+
+
+## Generators
+[ay](?t=hsc3&e=Help/UGen/ay.help.hs),
+instruction,
+kmeansToBPSet1,
+[sawDPW](?t=hsc3&e=Help/UGen/sawDPW.help.hs),
+textVU,
+[vosim](?t=hsc3&e=Help/UGen/vosim.help.hs)
+
+
+## Generators:Chaotic
+[cuspL](?t=hsc3&e=Help/UGen/cuspL.help.hs),
+[cuspN](?t=hsc3&e=Help/UGen/cuspN.help.hs),
+[fbSineC](?t=hsc3&e=Help/UGen/fbSineC.help.hs),
+[fbSineL](?t=hsc3&e=Help/UGen/fbSineL.help.hs),
+[fbSineN](?t=hsc3&e=Help/UGen/fbSineN.help.hs),
+[gbmanL](?t=hsc3&e=Help/UGen/gbmanL.help.hs),
+[gbmanN](?t=hsc3&e=Help/UGen/gbmanN.help.hs),
+[henonC](?t=hsc3&e=Help/UGen/henonC.help.hs),
+[henonL](?t=hsc3&e=Help/UGen/henonL.help.hs),
+[henonN](?t=hsc3&e=Help/UGen/henonN.help.hs),
+[latoocarfianC](?t=hsc3&e=Help/UGen/latoocarfianC.help.hs),
+latoocarfianL,
+latoocarfianN,
+[linCongC](?t=hsc3&e=Help/UGen/linCongC.help.hs),
+[linCongL](?t=hsc3&e=Help/UGen/linCongL.help.hs),
+[linCongN](?t=hsc3&e=Help/UGen/linCongN.help.hs),
+[logistic](?t=hsc3&e=Help/UGen/logistic.help.hs),
+[lorenzL](?t=hsc3&e=Help/UGen/lorenzL.help.hs),
+[quadC](?t=hsc3&e=Help/UGen/quadC.help.hs),
+[quadL](?t=hsc3&e=Help/UGen/quadL.help.hs),
+[quadN](?t=hsc3&e=Help/UGen/quadN.help.hs),
+[sinOscFB](?t=hsc3&e=Help/UGen/sinOscFB.help.hs),
+[standardL](?t=hsc3&e=Help/UGen/standardL.help.hs),
+standardN,
+arneodoCoulletTresser,
+breakcore,
+brusselator,
+[chen](?t=hsc3&e=Help/UGen/chen.help.hs),
+[dNoiseRing](?t=hsc3&e=Help/UGen/dNoiseRing.help.hs),
+doubleWell,
+doubleWell2,
+[doubleWell3](?t=hsc3&e=Help/UGen/doubleWell3.help.hs),
+fincoSprottL,
+fincoSprottM,
+fincoSprottS,
+fitzHughNagumo,
+gravityGrid,
+gravityGrid2,
+lotkaVolterra,
+mcldChaosGen,
+oregonator,
+[perlin3](?t=hsc3&e=Help/UGen/perlin3.help.hs),
+rmaFoodChainL,
+rosslerL,
+rosslerResL,
+spruceBudworm,
+termanWang,
+[vbFourses](?t=hsc3&e=Help/UGen/vbFourses.help.hs),
+weaklyNonlinear,
+[weaklyNonlinear2](?t=hsc3&e=Help/UGen/weaklyNonlinear2.help.hs)
+
+
+## Generators:Deterministic
+[blip](?t=hsc3&e=Help/UGen/blip.help.hs),
+[cOsc](?t=hsc3&e=Help/UGen/cOsc.help.hs),
+[dynKlang](?t=hsc3&e=Help/UGen/dynKlang.help.hs),
+[dynKlank](?t=hsc3&e=Help/UGen/dynKlank.help.hs),
+[fSinOsc](?t=hsc3&e=Help/UGen/fSinOsc.help.hs),
+[formant](?t=hsc3&e=Help/UGen/formant.help.hs),
+[impulse](?t=hsc3&e=Help/UGen/impulse.help.hs),
+[klang](?t=hsc3&e=Help/UGen/klang.help.hs),
+[klank](?t=hsc3&e=Help/UGen/klank.help.hs),
+[lfCub](?t=hsc3&e=Help/UGen/lfCub.help.hs),
+[lfGauss](?t=hsc3&e=Help/UGen/lfGauss.help.hs),
+[lfPar](?t=hsc3&e=Help/UGen/lfPar.help.hs),
+[lfPulse](?t=hsc3&e=Help/UGen/lfPulse.help.hs),
+[lfSaw](?t=hsc3&e=Help/UGen/lfSaw.help.hs),
+[lfTri](?t=hsc3&e=Help/UGen/lfTri.help.hs),
+[osc](?t=hsc3&e=Help/UGen/osc.help.hs),
+[oscN](?t=hsc3&e=Help/UGen/oscN.help.hs),
+pSinGrain,
+[pulse](?t=hsc3&e=Help/UGen/pulse.help.hs),
+[saw](?t=hsc3&e=Help/UGen/saw.help.hs),
+[sinOsc](?t=hsc3&e=Help/UGen/sinOsc.help.hs),
+[sinOscFB](?t=hsc3&e=Help/UGen/sinOscFB.help.hs),
+[syncSaw](?t=hsc3&e=Help/UGen/syncSaw.help.hs),
+[vOsc](?t=hsc3&e=Help/UGen/vOsc.help.hs),
+[vOsc3](?t=hsc3&e=Help/UGen/vOsc3.help.hs),
+[varSaw](?t=hsc3&e=Help/UGen/varSaw.help.hs),
+[vibrato](?t=hsc3&e=Help/UGen/vibrato.help.hs),
+[blitB3](?t=hsc3&e=Help/UGen/blitB3.help.hs),
+[blitB3Saw](?t=hsc3&e=Help/UGen/blitB3Saw.help.hs),
+[blitB3Square](?t=hsc3&e=Help/UGen/blitB3Square.help.hs),
+[blitB3Tri](?t=hsc3&e=Help/UGen/blitB3Tri.help.hs),
+[dpw3Tri](?t=hsc3&e=Help/UGen/dpw3Tri.help.hs),
+[dpw4Saw](?t=hsc3&e=Help/UGen/dpw4Saw.help.hs),
+[fm7](?t=hsc3&e=Help/UGen/fm7.help.hs),
+[miBraids](?t=hsc3&e=Help/UGen/miBraids.help.hs),
+[vbSlide](?t=hsc3&e=Help/UGen/vbSlide.help.hs)
+
+
+## Generators:Granular
+[grainBuf](?t=hsc3&e=Help/UGen/grainBuf.help.hs),
+[grainFM](?t=hsc3&e=Help/UGen/grainFM.help.hs),
+[grainIn](?t=hsc3&e=Help/UGen/grainIn.help.hs),
+[grainSin](?t=hsc3&e=Help/UGen/grainSin.help.hs),
+[tGrains](?t=hsc3&e=Help/UGen/tGrains.help.hs),
+[warp1](?t=hsc3&e=Help/UGen/warp1.help.hs),
+[miClouds](?t=hsc3&e=Help/UGen/miClouds.help.hs),
+tGrains2,
+tGrains3
+
+
+## Generators:PhysicalModels
+ball,
+[spring](?t=hsc3&e=Help/UGen/spring.help.hs),
+[tBall](?t=hsc3&e=Help/UGen/tBall.help.hs),
+[membraneCircle](?t=hsc3&e=Help/UGen/membraneCircle.help.hs),
+membraneCircleV,
+[membraneHexagon](?t=hsc3&e=Help/UGen/membraneHexagon.help.hs),
+membraneHexagonV
+
+
+## Generators:Single-value
+[dc](?t=hsc3&e=Help/UGen/dc.help.hs)
+
+
+## Generators:Stochastic
+[brownNoise](?t=hsc3&e=Help/UGen/brownNoise.help.hs),
+[clipNoise](?t=hsc3&e=Help/UGen/clipNoise.help.hs),
+[coinGate](?t=hsc3&e=Help/UGen/coinGate.help.hs),
+[crackle](?t=hsc3&e=Help/UGen/crackle.help.hs),
+[dust](?t=hsc3&e=Help/UGen/dust.help.hs),
+[dust2](?t=hsc3&e=Help/UGen/dust2.help.hs),
+[gendy1](?t=hsc3&e=Help/UGen/gendy1.help.hs),
+gendy2,
+gendy3,
+[grayNoise](?t=hsc3&e=Help/UGen/grayNoise.help.hs),
+[lfClipNoise](?t=hsc3&e=Help/UGen/lfClipNoise.help.hs),
+[lfdClipNoise](?t=hsc3&e=Help/UGen/lfdClipNoise.help.hs),
+[lfdNoise0](?t=hsc3&e=Help/UGen/lfdNoise0.help.hs),
+[lfdNoise1](?t=hsc3&e=Help/UGen/lfdNoise1.help.hs),
+[lfdNoise3](?t=hsc3&e=Help/UGen/lfdNoise3.help.hs),
+[lfNoise0](?t=hsc3&e=Help/UGen/lfNoise0.help.hs),
+[lfNoise1](?t=hsc3&e=Help/UGen/lfNoise1.help.hs),
+[lfNoise2](?t=hsc3&e=Help/UGen/lfNoise2.help.hs),
+[pinkNoise](?t=hsc3&e=Help/UGen/pinkNoise.help.hs),
+randID,
+[randSeed](?t=hsc3&e=Help/UGen/randSeed.help.hs),
+[vibrato](?t=hsc3&e=Help/UGen/vibrato.help.hs),
+[whiteNoise](?t=hsc3&e=Help/UGen/whiteNoise.help.hs),
+fhn2DC,
+fhn2DL,
+fhn2DN,
+[gaussTrig](?t=hsc3&e=Help/UGen/gaussTrig.help.hs),
+gbman2DC,
+gbman2DL,
+gbman2DN,
+gendy4,
+gendy5,
+henon2DC,
+henon2DL,
+henon2DN,
+[lfBrownNoise0](?t=hsc3&e=Help/UGen/lfBrownNoise0.help.hs),
+lfBrownNoise1,
+[lfBrownNoise2](?t=hsc3&e=Help/UGen/lfBrownNoise2.help.hs),
+latoocarfian2DC,
+latoocarfian2DL,
+latoocarfian2DN,
+lorenz2DC,
+lorenz2DL,
+lorenz2DN,
+[lorenzTrig](?t=hsc3&e=Help/UGen/lorenzTrig.help.hs),
+markovSynth,
+sieve1,
+standard2DC,
+[standard2DL](?t=hsc3&e=Help/UGen/standard2DL.help.hs),
+standard2DN
+
+
+
+## GranularSynthesis
+bfGrainPanner,
+[bufGrain](?t=hsc3&e=Help/UGen/bufGrain.help.hs),
+bufGrainB,
+bufGrainBBF,
+bufGrainBF,
+bufGrainI,
+bufGrainIBF,
+[concat](?t=hsc3&e=Help/UGen/concat.help.hs),
+concat2,
+[fmGrain](?t=hsc3&e=Help/UGen/fmGrain.help.hs),
+[fmGrainB](?t=hsc3&e=Help/UGen/fmGrainB.help.hs),
+fmGrainBBF,
+fmGrainBF,
+fmGrainI,
+fmGrainIBF,
+inGrain,
+inGrainB,
+inGrainBBF,
+inGrainBF,
+inGrainI,
+inGrainIBF,
+joshGrain,
+joshMultiChannelGrain,
+joshMultiOutGrain,
+[monoGrain](?t=hsc3&e=Help/UGen/monoGrain.help.hs),
+monoGrainBF,
+[sinGrain](?t=hsc3&e=Help/UGen/sinGrain.help.hs),
+sinGrainB,
+sinGrainBBF,
+sinGrainBF,
+sinGrainI,
+sinGrainIBF
+
+
+
+## InOut
+[diskIn](?t=hsc3&e=Help/UGen/diskIn.help.hs),
+diskOut,
+[in](?t=hsc3&e=Help/UGen/in.help.hs),
+[inFeedback](?t=hsc3&e=Help/UGen/inFeedback.help.hs),
+[inTrig](?t=hsc3&e=Help/UGen/inTrig.help.hs),
+[lagIn](?t=hsc3&e=Help/UGen/lagIn.help.hs),
+[localIn](?t=hsc3&e=Help/UGen/localIn.help.hs),
+[localOut](?t=hsc3&e=Help/UGen/localOut.help.hs),
+maxLocalBufs,
+[offsetOut](?t=hsc3&e=Help/UGen/offsetOut.help.hs),
+[out](?t=hsc3&e=Help/UGen/out.help.hs),
+[replaceOut](?t=hsc3&e=Help/UGen/replaceOut.help.hs),
+[vDiskIn](?t=hsc3&e=Help/UGen/vDiskIn.help.hs),
+[xOut](?t=hsc3&e=Help/UGen/xOut.help.hs)
+
+
+
+## Info
+checkBadValues,
+[controlDur](?t=hsc3&e=Help/UGen/controlDur.help.hs),
+[controlRate](?t=hsc3&e=Help/UGen/controlRate.help.hs),
+dpoll,
+numAudioBuses,
+[numBuffers](?t=hsc3&e=Help/UGen/numBuffers.help.hs),
+numControlBuses,
+numInputBuses,
+numOutputBuses,
+[numRunningSynths](?t=hsc3&e=Help/UGen/numRunningSynths.help.hs),
+[poll](?t=hsc3&e=Help/UGen/poll.help.hs),
+[radiansPerSample](?t=hsc3&e=Help/UGen/radiansPerSample.help.hs),
+[sampleDur](?t=hsc3&e=Help/UGen/sampleDur.help.hs),
+[sampleRate](?t=hsc3&e=Help/UGen/sampleRate.help.hs),
+sanitize,
+[subsampleOffset](?t=hsc3&e=Help/UGen/subsampleOffset.help.hs)
+
+
+
+## InfoUGens
+clockmus
+
+
+
+## Maths
+[clip](?t=hsc3&e=Help/UGen/clip.help.hs),
+fold,
+[inRange](?t=hsc3&e=Help/UGen/inRange.help.hs),
+inRect,
+[integrator](?t=hsc3&e=Help/UGen/integrator.help.hs),
+leastChange,
+[linExp](?t=hsc3&e=Help/UGen/linExp.help.hs),
+[modDif](?t=hsc3&e=Help/UGen/modDif.help.hs),
+[mostChange](?t=hsc3&e=Help/UGen/mostChange.help.hs),
+[mulAdd](?t=hsc3&e=Help/UGen/mulAdd.help.hs),
+[runningMax](?t=hsc3&e=Help/UGen/runningMax.help.hs),
+[runningMin](?t=hsc3&e=Help/UGen/runningMin.help.hs),
+[runningSum](?t=hsc3&e=Help/UGen/runningSum.help.hs),
+[schmidt](?t=hsc3&e=Help/UGen/schmidt.help.hs),
+[slope](?t=hsc3&e=Help/UGen/slope.help.hs),
+[wrap](?t=hsc3&e=Help/UGen/wrap.help.hs),
+[trigAvg](?t=hsc3&e=Help/UGen/trigAvg.help.hs)
+
+
+
+## Multichannel
+[arrayMax](?t=hsc3&e=Help/UGen/arrayMax.help.hs),
+[arrayMin](?t=hsc3&e=Help/UGen/arrayMin.help.hs),
+bufMax,
+bufMin
+
+
+## Multichannel:Ambisonics
+biPanB2,
+decodeB2,
+panB,
+panB2,
+[rotate2](?t=hsc3&e=Help/UGen/rotate2.help.hs),
+a2b,
+b2a,
+b2Ster,
+b2uhj,
+bfDecode1,
+bfDecoder,
+bfEncode1,
+bfEncode2,
+bfEncodeSter,
+bfManipulate,
+bfPanner,
+fmhDecode1,
+fmhEncode0,
+fmhEncode1,
+fmhEncode2,
+rotate,
+tilt,
+tumble,
+uhj2b
+
+
+## Multichannel:Panners
+[balance2](?t=hsc3&e=Help/UGen/balance2.help.hs),
+[linPan2](?t=hsc3&e=Help/UGen/linPan2.help.hs),
+[pan2](?t=hsc3&e=Help/UGen/pan2.help.hs),
+pan4,
+[panAz](?t=hsc3&e=Help/UGen/panAz.help.hs),
+[rotate2](?t=hsc3&e=Help/UGen/rotate2.help.hs),
+[splay](?t=hsc3&e=Help/UGen/splay.help.hs),
+splayAz,
+panX,
+vbap
+
+
+## Multichannel:Select
+[linXFade2](?t=hsc3&e=Help/UGen/linXFade2.help.hs),
+[select](?t=hsc3&e=Help/UGen/select.help.hs),
+[xFade2](?t=hsc3&e=Help/UGen/xFade2.help.hs)
+
+
+
+## Osc
+[miOmi](?t=hsc3&e=Help/UGen/miOmi.help.hs),
+[miPlaits](?t=hsc3&e=Help/UGen/miPlaits.help.hs)
+
+
+
+## Oscillator
+[blOsc](?t=hsc3&e=Help/UGen/blOsc.help.hs),
+[harmonicOsc](?t=hsc3&e=Help/UGen/harmonicOsc.help.hs),
+[neoFormant](?t=hsc3&e=Help/UGen/neoFormant.help.hs),
+neoVarSawOsc,
+oscBank,
+[varShapeOsc](?t=hsc3&e=Help/UGen/varShapeOsc.help.hs),
+[vosimOsc](?t=hsc3&e=Help/UGen/vosimOsc.help.hs),
+[zOsc](?t=hsc3&e=Help/UGen/zOsc.help.hs)
+
+
+
+## Oscillators
+[vbSlide](?t=hsc3&e=Help/UGen/vbSlide.help.hs)
+
+
+
+## PhysicalModelling
+[resonator](?t=hsc3&e=Help/UGen/resonator.help.hs),
+[rongs](?t=hsc3&e=Help/UGen/rongs.help.hs),
+[stringVoice](?t=hsc3&e=Help/UGen/stringVoice.help.hs)
+
+
+
+## PhysicalModels
+adachiAyers,
+[dwgBowed](?t=hsc3&e=Help/UGen/dwgBowed.help.hs),
+dwgBowedSimple,
+[dwgBowedTor](?t=hsc3&e=Help/UGen/dwgBowedTor.help.hs),
+[dwgClarinet3](?t=hsc3&e=Help/UGen/dwgClarinet3.help.hs),
+[dwgFlute](?t=hsc3&e=Help/UGen/dwgFlute.help.hs),
+dwgPlucked,
+[dwgPlucked2](?t=hsc3&e=Help/UGen/dwgPlucked2.help.hs),
+[dwgPluckedStiff](?t=hsc3&e=Help/UGen/dwgPluckedStiff.help.hs),
+[diodeRingMod](?t=hsc3&e=Help/UGen/diodeRingMod.help.hs),
+myPlucked,
+myPlucked2,
+myPluckedStiff,
+nTube,
+oteyPiano,
+[oteyPianoStrings](?t=hsc3&e=Help/UGen/oteyPianoStrings.help.hs),
+pluckSynth,
+stkGlobals,
+[stkInst](?t=hsc3&e=Help/UGen/stkInst.help.hs),
+[twoTube](?t=hsc3&e=Help/UGen/twoTube.help.hs)
+
+
+
+## Random
+[dshuf](?t=hsc3&e=Help/UGen/dshuf.help.hs),
+[dwrand](?t=hsc3&e=Help/UGen/dwrand.help.hs),
+[expRand](?t=hsc3&e=Help/UGen/expRand.help.hs),
+[hasher](?t=hsc3&e=Help/UGen/hasher.help.hs),
+[iRand](?t=hsc3&e=Help/UGen/iRand.help.hs),
+[linRand](?t=hsc3&e=Help/UGen/linRand.help.hs),
+[nRand](?t=hsc3&e=Help/UGen/nRand.help.hs),
+[rand](?t=hsc3&e=Help/UGen/rand.help.hs),
+randID,
+[randSeed](?t=hsc3&e=Help/UGen/randSeed.help.hs),
+[tExpRand](?t=hsc3&e=Help/UGen/tExpRand.help.hs),
+[tiRand](?t=hsc3&e=Help/UGen/tiRand.help.hs),
+[tRand](?t=hsc3&e=Help/UGen/tRand.help.hs),
+[tWindex](?t=hsc3&e=Help/UGen/tWindex.help.hs),
+[tBetaRand](?t=hsc3&e=Help/UGen/tBetaRand.help.hs),
+[tBrownRand](?t=hsc3&e=Help/UGen/tBrownRand.help.hs),
+[tGaussRand](?t=hsc3&e=Help/UGen/tGaussRand.help.hs)
+
+
+
+## Reverbs
+[freeVerb](?t=hsc3&e=Help/UGen/freeVerb.help.hs),
+freeVerb2,
+[gVerb](?t=hsc3&e=Help/UGen/gVerb.help.hs),
+dwgReverb3Band,
+dwgReverb3Band_16,
+dwgReverbC1C3,
+dwgReverbC1C3_16,
+earlyRef,
+earlyRefAtkGen,
+earlyRefGen,
+[jPverbRaw](?t=hsc3&e=Help/UGen/jPverbRaw.help.hs),
+[miVerb](?t=hsc3&e=Help/UGen/miVerb.help.hs),
+[vbJonVerb](?t=hsc3&e=Help/UGen/vbJonVerb.help.hs)
+
+
+
+## Synth control
+control,
+[detectSilence](?t=hsc3&e=Help/UGen/detectSilence.help.hs),
+[done](?t=hsc3&e=Help/UGen/done.help.hs),
+[free](?t=hsc3&e=Help/UGen/free.help.hs),
+[freeSelf](?t=hsc3&e=Help/UGen/freeSelf.help.hs),
+[freeSelfWhenDone](?t=hsc3&e=Help/UGen/freeSelfWhenDone.help.hs),
+lagControl,
+[pause](?t=hsc3&e=Help/UGen/pause.help.hs),
+[pauseSelf](?t=hsc3&e=Help/UGen/pauseSelf.help.hs),
+[pauseSelfWhenDone](?t=hsc3&e=Help/UGen/pauseSelfWhenDone.help.hs)
+
+
+
+## Triggers
+[changed](?t=hsc3&e=Help/UGen/changed.help.hs),
+[gate](?t=hsc3&e=Help/UGen/gate.help.hs),
+[inTrig](?t=hsc3&e=Help/UGen/inTrig.help.hs),
+[lastValue](?t=hsc3&e=Help/UGen/lastValue.help.hs),
+[latch](?t=hsc3&e=Help/UGen/latch.help.hs),
+[phasor](?t=hsc3&e=Help/UGen/phasor.help.hs),
+[pulseCount](?t=hsc3&e=Help/UGen/pulseCount.help.hs),
+[pulseDivider](?t=hsc3&e=Help/UGen/pulseDivider.help.hs),
+[sendReply](?t=hsc3&e=Help/UGen/sendReply.help.hs),
+sendTrig,
+[setResetFF](?t=hsc3&e=Help/UGen/setResetFF.help.hs),
+[stepper](?t=hsc3&e=Help/UGen/stepper.help.hs),
+[sweep](?t=hsc3&e=Help/UGen/sweep.help.hs),
+[t2a](?t=hsc3&e=Help/UGen/t2a.help.hs),
+[t2k](?t=hsc3&e=Help/UGen/t2k.help.hs),
+[tDelay](?t=hsc3&e=Help/UGen/tDelay.help.hs),
+[tExpRand](?t=hsc3&e=Help/UGen/tExpRand.help.hs),
+[tiRand](?t=hsc3&e=Help/UGen/tiRand.help.hs),
+[tRand](?t=hsc3&e=Help/UGen/tRand.help.hs),
+[tWindex](?t=hsc3&e=Help/UGen/tWindex.help.hs),
+[timer](?t=hsc3&e=Help/UGen/timer.help.hs),
+[toggleFF](?t=hsc3&e=Help/UGen/toggleFF.help.hs),
+[trig](?t=hsc3&e=Help/UGen/trig.help.hs),
+[trig1](?t=hsc3&e=Help/UGen/trig1.help.hs),
+[summer](?t=hsc3&e=Help/UGen/summer.help.hs),
+[tBetaRand](?t=hsc3&e=Help/UGen/tBetaRand.help.hs),
+[tBrownRand](?t=hsc3&e=Help/UGen/tBrownRand.help.hs),
+[tGaussRand](?t=hsc3&e=Help/UGen/tGaussRand.help.hs),
+wrapSummer
+
+
+
+## Unclassified
+permMod,
+permModArray,
+permModT,
+printVal
+
+
+
+## Undocumented
+apf,
+[pauseSelfWhenDone](?t=hsc3&e=Help/UGen/pauseSelfWhenDone.help.hs),
+a2b,
+allpass1,
+allpass2,
+atsNoise,
+atsPartial,
+[audioMSG](?t=hsc3&e=Help/UGen/audioMSG.help.hs),
+b2a,
+b2Ster,
+b2uhj,
+bHiCut,
+blBufRd,
+bLowCut,
+binData,
+blitB3D,
+bufGrainBBF,
+bufGrainBF,
+bufGrainIBF,
+cq_Diff,
+clipper32,
+clipper4,
+clipper8,
+clockmus,
+combFormlet,
+combLP,
+dwgFlute2,
+[dwgSoundBoard](?t=hsc3&e=Help/UGen/dwgSoundBoard.help.hs),
+driveNoise,
+fftCentroid,
+fftComplexDev,
+fftDiffMags,
+fftFlux,
+fftFluxPos,
+fftmkl,
+fftPhaseDev,
+fftSubbandFlux,
+fmGrainBBF,
+fmGrainBF,
+fmGrainIBF,
+fmhEncode0,
+fhnTrig,
+fincoSprottL,
+fincoSprottM,
+fincoSprottS,
+gbmanTrig,
+grainBufJ,
+grainFMJ,
+grainInJ,
+grainSinJ,
+henonTrig,
+inGrain,
+inGrainB,
+inGrainBBF,
+inGrainBF,
+inGrainI,
+inGrainIBF,
+lpf1,
+lpf18,
+lpfvs6,
+lrHiCut,
+lrLowCut,
+latoocarfianTrig,
+matchingPResynth,
+miWarps,
+needleRect,
+osFold4,
+osFold8,
+osTrunc4,
+osTrunc8,
+osWrap4,
+osWrap8,
+onsetsDS,
+[oteySoundBoard](?t=hsc3&e=Help/UGen/oteySoundBoard.help.hs),
+panX2D,
+peakEQ2,
+peakEQ4,
+permMod,
+permModArray,
+permModT,
+posRatio,
+[rBezier](?t=hsc3&e=Help/UGen/rBezier.help.hs),
+[rdx7](?t=hsc3&e=Help/UGen/rdx7.help.hs),
+[rDelayMap](?t=hsc3&e=Help/UGen/rDelayMap.help.hs),
+[rDelaySet](?t=hsc3&e=Help/UGen/rDelaySet.help.hs),
+[rDelaySetB](?t=hsc3&e=Help/UGen/rDelaySetB.help.hs),
+[rDustR](?t=hsc3&e=Help/UGen/rDustR.help.hs),
+[rFreezer](?t=hsc3&e=Help/UGen/rFreezer.help.hs),
+[rLoopSet](?t=hsc3&e=Help/UGen/rLoopSet.help.hs),
+rmaFoodChainL,
+[rmeq](?t=hsc3&e=Help/UGen/rmeq.help.hs),
+[rmShelf](?t=hsc3&e=Help/UGen/rmShelf.help.hs),
+rmShelf2,
+[rObxdFilter](?t=hsc3&e=Help/UGen/rObxdFilter.help.hs),
+[rPlayTrace](?t=hsc3&e=Help/UGen/rPlayTrace.help.hs),
+[rShufflerB](?t=hsc3&e=Help/UGen/rShufflerB.help.hs),
+[rShufflerL](?t=hsc3&e=Help/UGen/rShufflerL.help.hs),
+[rtExpRandN](?t=hsc3&e=Help/UGen/rtExpRandN.help.hs),
+[rtRandN](?t=hsc3&e=Help/UGen/rtRandN.help.hs),
+[rtScramble](?t=hsc3&e=Help/UGen/rtScramble.help.hs),
+[rTraceRd](?t=hsc3&e=Help/UGen/rTraceRd.help.hs),
+regaliaMitraEQ,
+rosslerResL,
+rotate,
+somAreaWr,
+selectL,
+sinTone,
+skipNeedle,
+[softClipAmp](?t=hsc3&e=Help/UGen/softClipAmp.help.hs),
+softClipAmp4,
+softClipAmp8,
+softClipper4,
+softClipper8,
+sonLPCSynth,
+sonLPCSynthIn,
+[spreader](?t=hsc3&e=Help/UGen/spreader.help.hs),
+standardTrig,
+[stkBandedWG](?t=hsc3&e=Help/UGen/stkBandedWG.help.hs),
+stkBeeThree,
+stkBlowHole,
+stkBowed,
+stkClarinet,
+stkFlute,
+[stkMandolin](?t=hsc3&e=Help/UGen/stkMandolin.help.hs),
+[stkModalBar](?t=hsc3&e=Help/UGen/stkModalBar.help.hs),
+[stkMoog](?t=hsc3&e=Help/UGen/stkMoog.help.hs),
+[stkPluck](?t=hsc3&e=Help/UGen/stkPluck.help.hs),
+stkSaxofony,
+[stkShakers](?t=hsc3&e=Help/UGen/stkShakers.help.hs),
+stkVoicForm,
+tTendency,
+tilt,
+tumble,
+uhj2b,
+xFadeRotate
+
+
+
+## User interaction
+[keyState](?t=hsc3&e=Help/UGen/keyState.help.hs),
+[mouseButton](?t=hsc3&e=Help/UGen/mouseButton.help.hs),
+[mouseX](?t=hsc3&e=Help/UGen/mouseX.help.hs),
+[mouseY](?t=hsc3&e=Help/UGen/mouseY.help.hs)
+
+
+
+## Wrappers
+[ladspa](?t=hsc3&e=Help/UGen/ladspa.help.hs),
+mdaPiano
+
+
+
+## Operator:Binary
+[add](?t=hsc3&e=Help/UGen/add.help.hs),
+[sub](?t=hsc3&e=Help/UGen/sub.help.hs),
+[mul](?t=hsc3&e=Help/UGen/mul.help.hs),
+iDiv,
+fDiv,
+[mod](?t=hsc3&e=Help/UGen/mod.help.hs),
+eq,
+ne,
+lt,
+gt,
+le,
+ge,
+[min](?t=hsc3&e=Help/UGen/min.help.hs),
+[max](?t=hsc3&e=Help/UGen/max.help.hs),
+bitAnd,
+bitOr,
+bitXor,
+[lcm](?t=hsc3&e=Help/UGen/lcm.help.hs),
+[gcd](?t=hsc3&e=Help/UGen/gcd.help.hs),
+round,
+[roundUp](?t=hsc3&e=Help/UGen/roundUp.help.hs),
+trunc,
+[atan2](?t=hsc3&e=Help/UGen/atan2.help.hs),
+[hypot](?t=hsc3&e=Help/UGen/hypot.help.hs),
+hypotx,
+[pow](?t=hsc3&e=Help/UGen/pow.help.hs),
+shiftLeft,
+shiftRight,
+unsignedShift,
+fill,
+[ring1](?t=hsc3&e=Help/UGen/ring1.help.hs),
+[ring2](?t=hsc3&e=Help/UGen/ring2.help.hs),
+[ring3](?t=hsc3&e=Help/UGen/ring3.help.hs),
+[ring4](?t=hsc3&e=Help/UGen/ring4.help.hs),
+[difSqr](?t=hsc3&e=Help/UGen/difSqr.help.hs),
+[sumSqr](?t=hsc3&e=Help/UGen/sumSqr.help.hs),
+[sqrSum](?t=hsc3&e=Help/UGen/sqrSum.help.hs),
+[sqrDif](?t=hsc3&e=Help/UGen/sqrDif.help.hs),
+[absDif](?t=hsc3&e=Help/UGen/absDif.help.hs),
+[thresh](?t=hsc3&e=Help/UGen/thresh.help.hs),
+[amClip](?t=hsc3&e=Help/UGen/amClip.help.hs),
+[scaleNeg](?t=hsc3&e=Help/UGen/scaleNeg.help.hs),
+[clip2](?t=hsc3&e=Help/UGen/clip2.help.hs),
+[excess](?t=hsc3&e=Help/UGen/excess.help.hs),
+[fold2](?t=hsc3&e=Help/UGen/fold2.help.hs),
+[wrap2](?t=hsc3&e=Help/UGen/wrap2.help.hs),
+firstArg,
+randRange,
+expRandRange
+
+
+## Operator:Unary
+[neg](?t=hsc3&e=Help/UGen/neg.help.hs),
+not,
+isNil,
+notNil,
+bitNot,
+[abs](?t=hsc3&e=Help/UGen/abs.help.hs),
+asFloat,
+asInt,
+ceil,
+floor,
+[frac](?t=hsc3&e=Help/UGen/frac.help.hs),
+sign,
+squared,
+cubed,
+sqrt,
+exp,
+recip,
+midicps,
+cpsmidi,
+midiRatio,
+ratioMIDI,
+[dbAmp](?t=hsc3&e=Help/UGen/dbAmp.help.hs),
+[ampDb](?t=hsc3&e=Help/UGen/ampDb.help.hs),
+octCPS,
+cpsOct,
+[log](?t=hsc3&e=Help/UGen/log.help.hs),
+log2,
+log10,
+[sin](?t=hsc3&e=Help/UGen/sin.help.hs),
+[cos](?t=hsc3&e=Help/UGen/cos.help.hs),
+[tan](?t=hsc3&e=Help/UGen/tan.help.hs),
+arcSin,
+arcCos,
+arcTan,
+sinH,
+cosH,
+tanH,
+rand_,
+rand2,
+linRand_,
+biLinRand,
+sum3Rand,
+[distort](?t=hsc3&e=Help/UGen/distort.help.hs),
+[softClip](?t=hsc3&e=Help/UGen/softClip.help.hs),
+coin,
+digitValue,
+silence,
+thru,
+rectWindow,
+hanWindow,
+welchWindow,
+triWindow,
+ramp_,
+sCurve
+
 
 
diff --git a/Help/UGen/jPverbRaw.help.lhs b/Help/UGen/jPverbRaw.help.lhs
deleted file mode 100644
--- a/Help/UGen/jPverbRaw.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-default values
-
-> g_01 =
->   let (i1,i2) = (soundIn 0,soundIn 1)
->   in X.jPverbRaw i1 i2 0 0.707 2000 1 500 1 0.1 2 1 1 1
-
diff --git a/Help/UGen/k2a.help.lhs b/Help/UGen/k2a.help.lhs
deleted file mode 100644
--- a/Help/UGen/k2a.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = k2a (whiteNoise 'α' KR * 0.3)
-
-compare
-
-> g_02 = mce2 (k2a (whiteNoise 'α' KR * 0.3)) (whiteNoise 'β' AR * 0.1)
-
-> g_03 =
->     let freq = (mouseX KR 0.1 40 Exponential 0.2) / blockSize * sampleRate;
->         o1 = k2a (lfNoise0 'α' KR freq)
->         o2 = lfNoise0 'β' AR freq
->     in mce2 o1 o2 * 0.1
diff --git a/Help/UGen/keyState.help.lhs b/Help/UGen/keyState.help.lhs
deleted file mode 100644
--- a/Help/UGen/keyState.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-The keycode 38 is the A key on my keyboard.  Under X the xev(1)
-command is useful in determining your keyboard layout.
-
-> g_01 = sinOsc AR 800 0 * keyState KR 38 0 0.1 0.5
diff --git a/Help/UGen/keyTrack.help.lhs b/Help/UGen/keyTrack.help.lhs
deleted file mode 100644
--- a/Help/UGen/keyTrack.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let s = soundIn (mce2 0 1)
->       t = fft' (localBuf 'α' 1 4096) (mix s)
->       k = keyTrack KR t 2.0 0.5
->       p = poll (impulse KR 1 0) k 0 (label "key")
->   in mrg2 s p
diff --git a/Help/UGen/klang.help.lhs b/Help/UGen/klang.help.lhs
deleted file mode 100644
--- a/Help/UGen/klang.help.lhs
+++ /dev/null
@@ -1,28 +0,0 @@
-Note: SC2 had mul/add inputs.
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let f = [440,550..1100]
->         a = take 7 (cycle [0.05, 0.02])
->         p = replicate 7 0
->     in klang AR 1 0 (klangSpec f a p)
-
-    play({Klang.ar(`[[800,1000,1200],[0.3,0.3,0.3],[pi,pi,pi]],1,0)*0.4})
-
-> g_02 =
->     let s = klangSpec [800,1000,1200] [0.3,0.3,0.3] [pi,pi,pi]
->     in klang AR 1 0 s * 0.4
-
-    play({Klang.ar(`[[800,1000,1200],nil,nil],1,0)*0.25})
-
-> g_03 =
->     let s = klangSpec [800,1000,1200] [1,1,1] [0,0,0]
->     in klang AR 1 0 s * 0.25
-
-    play({Klang.ar(`[Array.rand(12,600.0,1000.0),nil,nil],1,0)*0.05})
-
-> g_04 =
->     let f = map (\z -> rand z 600 1000) ['a'..'l']
->         s = klangSpec f (replicate 12 1) (replicate 12 0)
->     in klang AR 1 0 s * 0.05
diff --git a/Help/UGen/klank.help.lhs b/Help/UGen/klank.help.lhs
deleted file mode 100644
--- a/Help/UGen/klank.help.lhs
+++ /dev/null
@@ -1,32 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-The klankSpec family of functions can help create the 'spec' entry.
-
-> f_01 impulse_freq reson_freq decay_time =
->   let u n = replicate (length reson_freq) n
->       k = klankSpec_k reson_freq (u 1) (u decay_time)
->   in klank (impulse AR impulse_freq 0 * 0.1) 1 0 1 k
-
-> g_01 = f_01 2 [800,1071,1153,1723] 1
-
-There is a limited form of multiple channel expansion possible at
-'specification' input, below three equal dimensional specifications
-are transposed and force expansion in a sensible manner.
-
-> g_02 =
->     let u = [1,1,1,1]
->         p = [200,171,153,172]
->         q = [930,971,953,1323]
->         r = [8900,16062,9013,7892]
->         k = mce [klankSpec_k p u u,klankSpec_k q u u,klankSpec_k r u u]
->         s = mceTranspose k
->         i = mce [2,2.07,2.13]
->         t = impulse AR i 0 * 0.1
->         l = mce [-1,0,1]
->     in mix (pan2 (klank t 1 0 1 s) l 1)
-
-Modal data
-
-    > import Sound.SC3.Data.Modal {- hsc3-data -}
-    > let Just reson_freq =lookup "Spinel sphere (diameter=3.6675mm)" modal_frequencies
-    > audition (out 0 (f_01 0.125 reson_freq 16))
diff --git a/Help/UGen/ladspa.help.lhs b/Help/UGen/ladspa.help.lhs
deleted file mode 100644
--- a/Help/UGen/ladspa.help.lhs
+++ /dev/null
@@ -1,243 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.HW.External as X {- hsc3 -}
-
-Note: debian sc3-plugins doesn't build ladspalist, to build type:
-
-    cd opt/src/sc3-plugins/source/LadspaUGen
-    gcc -ldl search.c ladspalist.c -o ladspalist
-
-CAPS = http://quitte.de/dsp/caps.html, http://packages.debian.org/stable/caps
-
-    # 1767 C* ChorusI - Mono chorus/flanger
-    > k: t (ms) (2.5 to 40)
-    > k: width (ms) (0.5 to 10)
-    > k: rate (Hz) (0.02 to 5)
-    > k: blend (0 to 1)
-    > k: feedforward (0 to 1)
-    > k: feedback (0 to 1)
-    > a: in (0 to 0)
-    < a: out
-
-> caps_1767_01 =
->   let s = soundIn 0
->       x = mouseX KR 0 1 Linear 0.2
->       y = mouseY KR 0 1 Linear 0.2
->       n1 = range 2.5 40 (lfNoise2 'α' KR 0.2)
->       n2 = range 0.5 10 (lfNoise2 'β' KR 0.2)
->   in X.ladspa 1 AR 1767 [n1,n2,0.5,0.5,x,y,s]
-
-    # 1769 C* Click - Metronome
-    > k: model (0 to 3)
-    > k: bpm (4 to 240)
-    > k: volume (0 to 1)
-    > k: damping (0 to 1)
-    < a: out
-
-> caps_1769_01 =
->   let x = roundE (mouseX KR 0 3 Linear 0.2)
->       y = mouseY KR 4 240 Linear 0.2
->   in X.ladspa 1 AR 1769 [x,y,0.5,0.5]
-
-    # 1773 C* Eq10 - 10-band equaliser
-    > k: 31 Hz (-48 to 24)
-    > k: 63 Hz (-48 to 24)
-    > k: 125 Hz (-48 to 24)
-    > k: 250 Hz (-48 to 24)
-    > k: 500 Hz (-48 to 24)
-    > k: 1 kHz (-48 to 24)
-    > k: 2 kHz (-48 to 24)
-    > k: 4 kHz (-48 to 24)
-    > k: 8 kHz (-48 to 24)
-    > k: 16 kHz (-48 to 24)
-    > a: in (0 to 0)
-    < a: out
-
-> enumN n e = take n (enumFrom e)
-
-> caps_1773_01 =
->   let s = soundIn 0
->       n = map (\z -> range (-24) 48 (lfNoise2 z KR 0.2)) (enumN 10 'α')
->   in X.ladspa 1 AR 1773 (n ++ [s]) * 0.5
-
-    # 1771 C* Saturate - Various static nonlinearities, 8x oversampled
-    > k: mode (0 to 11)
-    > k: gain (dB) (-24 to 72)
-    > k: bias (0 to 1)
-    > a: in (0 to 0)
-    < a: out
-
-> caps_1771_01 =
->   let s = soundIn 0
->   in X.ladspa 1 AR 1771 [1,0,0,s]
-
-> caps_1771_02 =
->   let s = soundIn 0
->       x = roundE (mouseX KR 0 11 Linear 0.2)
->       y = mouseY KR (-24) 72 Linear 0.2
->   in X.ladspa 1 AR 1771 [x,y,0.0,s]
-
-    # 1772 C* Compress - Compressor and saturating limiter
-    > k: measure (0 to 1)
-    > k: mode (0 to 2)
-    > k: threshold (0 to 1)
-    > k: strength (0 to 1)
-    > k: attack (0 to 1)
-    > k: release (0 to 1)
-    > k: gain (dB) (-12 to 18)
-    < k: state (dB)
-    > a: in (-1 to 1)
-    < a: out
-
-> caps_1772_01 =
->   let s = soundIn 0
->       x = roundE (mouseX KR 0 2 Linear 0.2)
->       y = mouseY KR 0 1 Linear 0.2
->   in X.ladspa 1 AR 1772 [0.5,x,y,0.5,0.5,0.1,0,s]
-
-    # 1779 C* Plate - Versatile plate reverb
-    > k: bandwidth (0 to 1)
-    > k: tail (0 to 1)
-    > k: damping (0 to 1)
-    > k: blend (0 to 1)
-    > a: in (0 to 0)
-    < a: out.l
-    < a: out.r
-
-> caps_1779_01 =
->   let s = soundIn 0
->       x = mouseX KR 0 1 Linear 0.2
->       y = mouseY KR 0 1 Linear 0.2
->   in X.ladspa 2 AR 1779 [x,y,0.5,0.5,s]
-
-    # 1788 C* Wider - Stereo image synthesis
-    > k: pan (-1 to 1)
-    > k: width (0 to 1)
-    > a: in (0 to 0)
-    < a: out.l
-    < a: out.r
-
-> caps_1788_01 =
->   let s = soundIn 0
->       x = mouseX KR (-1) 1 Linear 0.2
->       y = mouseY KR 0 1 Linear 0.2
->   in X.ladspa 2 AR 1788 [x,y,s]
-
-    # 2586 C* PhaserII - Mono phaser
-    > k: rate (0 to 1)
-    > k: lfo (0 to 1)
-    > k: depth (0 to 1)
-    > k: spread (0 to 1)
-    > k: resonance (0 to 1)
-    > a: in (0 to 0)
-    < a: out
-
-> caps_2586_01 =
->   let s = soundIn 0
->       x = mouseX KR 0 1 Linear 0.2
->       y = mouseY KR 0 1 Linear 0.2
->   in X.ladspa 1 AR 2586 [0.3,x,0.5,y,0.8,s]
-
-    # 2588 C* Scape - Stereo delay with chromatic resonances
-    > k: bpm (30 to 164)
-    > k: divider (2 to 4)
-    > k: feedback (0 to 1)
-    > k: dry (0 to 1)
-    > k: blend (0 to 1)
-    > k: tune (Hz) (415 to 467)
-    > a: in (0 to 0)
-    < a: out.l
-    < a: out.r
-
-> caps_2588_01 =
->   let s = soundIn 0
->       x = mouseX KR 30 164 Linear 0.2
->       y = roundE (mouseY KR 2 4 Linear 0.2)
->       n1 = lfNoise2 'α' KR 0.2
->       n2 = lfNoise2 'β' KR 0.2
->   in X.ladspa 2 AR 2588 [x,y,n1,n2,0.5,440,s]
-
-    # 2592 C* AmpVTS - Idealised guitar amplification
-    > k: over (0 to 2)
-    > k: gain (0 to 1)
-    > k: bright (0 to 1)
-    > k: power (0 to 1)
-    > k: tonestack (0 to 8)
-    > k: bass (0 to 1)
-    > k: mid (0 to 1)
-    > k: treble (0 to 1)
-    > k: attack (0 to 1)
-    > k: squash (0 to 1)
-    > k: lowcut (0 to 1)
-    > a: in (0 to 0)
-    < a: out
-
-> caps_2592_def s = [1,0.25,0.75,0.5,1,0.25,1,0.75,0.75,0.25,0.5,s]
-
-> caps_2592_01 = X.ladspa 1 AR 2592 (caps_2592_def (soundIn 0))
-
-> caps_2592_02 =
->   let s = soundIn 0
->       x = roundE (mouseX KR 0 8 Linear 0.2)
->       y = mouseY KR 0 1 Linear 0.2
->       [n1,n2,n3,n4,n5,n6,n7,n8] = map (\z -> lfNoise2 z KR 0.2) (enumN 8 'α')
->   in X.ladspa 1 AR 2592 [1,y,n1,n2,x,n3,n4,n5,n6,n7,n8,s]
-
-    # 2603 C* Spice - Not an exciter
-    > k: lo.f (Hz) (50 to 400)
-    > k: lo.compress (0 to 1)
-    > k: lo.gain (0 to 1)
-    > k: hi.f (Hz) (400 to 5000)
-    > k: hi.gain (0 to 1)
-    > a: in (0 to 0)
-    < a: out
-
-> caps_2603_01 =
->   let s = soundIn 0
->       x = mouseX KR 50 400 Exponential 0.2
->       y = mouseY KR 400 5000 Exponential 0.2
->   in X.ladspa 1 AR 2603 [x,0.5,0.5,y,0.5,s]
-
-    # 2609 C* EqFA4p - 4-band parametric eq
-    > k: a.act (0 to 1)
-    > k: a.f (Hz) (20 to 14000)
-    > k: a.bw (0.125 to 8)
-    > k: a.gain (dB) (-24 to 24)
-    > k: b.act (0 to 1)
-    > k: b.f (Hz) (20 to 14000)
-    > k: b.bw (0.125 to 8)
-    > k: b.gain (dB) (-24 to 24)
-    > k: c.act (0 to 1)
-    > k: c.f (Hz) (20 to 14000)
-    > k: c.bw (0.125 to 8)
-    > k: c.gain (dB) (-24 to 24)
-    > k: d.act (0 to 1)
-    > k: d.f (Hz) (20 to 14000)
-    > k: d.bw (0.125 to 8)
-    > k: d.gain (dB) (-24 to 24)
-    > k: gain (-24 to 24)
-    < k: _latency
-    > a: in (0 to 0)
-    < a: out
-
-> caps_2609_01 =
->   let s = soundIn 0
->       f z m l r = m (lfNoise2 z KR 0.2) (-1) 1 l r
->       p = [f 'α' linLin 0 1
->           ,f 'β' linExp 20 14000
->           ,f 'γ' linExp 0.125 8
->           ,f 'δ' linLin (-24) 24
->           ,f 'ε' linLin 0 1
->           ,f 'ζ' linExp 20 14000
->           ,f 'η' linExp 0.125 8
->           ,f 'θ' linLin (-24) 24
->           ,f 'ι' linLin 0 1
->           ,f 'κ' linExp 20 14000
->           ,f 'λ' linExp 0.125 8
->           ,f 'μ' linLin (-24) 24
->           ,f 'ν' linLin 0 1
->           ,f 'ξ' linExp 20 14000
->           ,f 'ο' linExp 0.125 8
->           ,f 'π' linLin (-24) 24
->           ,0
->           ,s]
->   in X.ladspa 1 AR 2609 p * 0.5
diff --git a/Help/UGen/lag.help.lhs b/Help/UGen/lag.help.lhs
deleted file mode 100644
--- a/Help/UGen/lag.help.lhs
+++ /dev/null
@@ -1,21 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let x = mouseX KR 220 440 Linear 0.2
->     in sinOsc AR (mce [x, lag x 1]) 0 * 0.1
-
-> g_02 =
->     let n = lfNoise0 'α' KR 0.5
->     in sinOsc AR (220 + (lag n 1 * 220)) 0 * (lag n 2 * 0.1)
-
-> g_03 = lag (impulse AR 100 0) (mouseX KR 0.0 0.01 Linear 0.2)
-
-> g_04 = lag (lfPulse AR 50 0 0.5) (mouseX KR 0.0 (1/50) Linear 0.2) * 0.2
-
-> g_05 =
->   let s = sinOsc AR 0.05 0.0
->       f1 = linLin s (-1.0) 1.0 220.0 440.0
->       o1 = sinOsc AR f1 0.0
->       f2 = lag f1 1.0
->       o2 = sinOsc AR f2 0.0
->   in mce2 (o1 * 0.2) (o2 * 0.2)
diff --git a/Help/UGen/lag2.help.lhs b/Help/UGen/lag2.help.lhs
deleted file mode 100644
--- a/Help/UGen/lag2.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let x = mouseX KR 220 440 Exponential 0.1
->     in sinOsc AR (mce [x, lag2 x 1]) 0 * 0.1
-
-> g_02 = lag2 (impulse AR 100 0) (mouseX KR 0.0 0.01 Linear 0.2)
diff --git a/Help/UGen/lag3.help.lhs b/Help/UGen/lag3.help.lhs
deleted file mode 100644
--- a/Help/UGen/lag3.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let x = mouseX KR 220 440 Exponential 0.1
->     in sinOsc AR (mce [x, lag3 x 1]) 0 * 0.1
-
-> g_02 = lag3 (impulse AR 100 0) (mouseX KR 0.0 0.01 Linear 0.2)
-
-> g_03 = lag3 (lfPulse AR 100 0 0.5) (mouseX KR 0.0 0.01 Linear 0.2)
-
-> g_04 =
->   let x = mouseX KR 0.0 0.01 Linear 0.2
->   in lag (lag (lag (lfPulse AR 100 0 0.5 * 2 - 1) x) x) x
diff --git a/Help/UGen/lagIn.help.lhs b/Help/UGen/lagIn.help.lhs
deleted file mode 100644
--- a/Help/UGen/lagIn.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Set frequency at control bus
-
-    import Sound.OSC {- hosc -}
-    withSC3 (sendMessage (c_set1 10 200))
-
-Oscillator reading frequency at control bus
-
-> g_01 = sinOsc AR (lagIn 1 10 1) 0 * 0.1
-
-Re-set frequency at control bus
-
-    withSC3 (sendMessage (c_set1 10 2000))
diff --git a/Help/UGen/lagUD.help.lhs b/Help/UGen/lagUD.help.lhs
deleted file mode 100644
--- a/Help/UGen/lagUD.help.lhs
+++ /dev/null
@@ -1,31 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-lag pitch, slower down (5 seconds) than up (1 second)
-
-> g_01 =
->   let x = mouseX KR 220 440 Linear 0.2
->   in sinOsc AR (mce2 x (lagUD x 1 5)) 0 * 0.1
-
-as signal filter
-
-> f_01 l s =
->   let x = mouseX KR 0.0001 0.01 Exponential 0.2
->       y = mouseY KR 0.0001 0.01 Exponential 0.2
->   in l s x y
-
-> f_02 = f_01 lagUD
-> f_03 = f_01 lag2UD
-> f_04 = f_01 lag3UD
-
-> g_02 = f_02 (0 - saw AR 440) * 0.15
-> g_03 = f_02 (impulse AR (range 6 24 (lfNoise2 'α' KR 4)) 0) * 0.5
-> g_04 = f_04 (lfPulse AR 800 0 0.5 * 2 - 1) * 0.25
-
-> g_05 =
->   let s = varSaw AR 220 0 (range 0 1 (sinOsc KR 0.25 0))
->   in f_02 s * 0.1
-
-> g_06 =
->   let x = mouseX KR 0.0 (1/100) Linear 0.2
->       y = mouseY KR 0.0 (3/100) Linear 0.2
->   in lagUD (lfPulse AR 50 0 0.25) x y * 0.2
diff --git a/Help/UGen/lastValue.help.lhs b/Help/UGen/lastValue.help.lhs
deleted file mode 100644
--- a/Help/UGen/lastValue.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "LastValue"
-> Sound.SC3.UGen.DB.ugenSummary "LastValue"
-
-> import Sound.SC3
-
-> let x = mouseX KR 100 400 Linear 0.1
-> in audition (out 0 (sinOsc AR (lastValue x 40) 0 * 0.1))
-
-Difference between currrent and the last changed
-> let {x = mouseX KR 0.1 4 Linear 0.1
->     ;f = abs (lastValue x 0.5 - x) * 400 + 200}
-> in audition (out 0 (sinOsc AR f 0 * 0.2))
diff --git a/Help/UGen/latch.help.lhs b/Help/UGen/latch.help.lhs
deleted file mode 100644
--- a/Help/UGen/latch.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let n = whiteNoise 'α' AR
->       i = impulse AR 9 0
->       l = latch n i
->   in blip AR (l * 400 + 500) 4 * 0.2
-
-The above is just meant as example. LFNoise0 is a faster way to
-generate random steps :
-
-> g_02 =
->   let n = lfNoise0 'α' KR 9
->   in blip AR (n * 400 + 500) 4 * 0.2
-
-http://create.ucsb.edu/pipermail/sc-users/2006-December/029991.html
-
-> g_03 =
->   let n0 = lfNoise2 'α' KR 8
->       n1 = lfNoise2 'β' KR 3
->       s = blip AR (n0 * 200 + 300) (n1 * 10 + 20)
->       x = mouseX KR 1000 (sampleRate * 0.1) Exponential 0.1
->   in latch s (impulse AR x 0)
diff --git a/Help/UGen/latoocarfianC.help.lhs b/Help/UGen/latoocarfianC.help.lhs
deleted file mode 100644
--- a/Help/UGen/latoocarfianC.help.lhs
+++ /dev/null
@@ -1,27 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.Common.Math.Noise {- hsc3 -}
-
-SC3 default initial parameters.
-
-> g_01 =
->   let x = mouseX KR 20 sampleRate Linear 0.1
->   in latoocarfianC AR x 1 3 0.5 0.5 0.5 0.5 * 0.2
-
-Randomly modulate all parameters.
-
-> g_02 =
->   let [n0,n1,n2,n3] = map (\e -> lfNoise2 e KR 5) "abcd"
->       f = sampleRate / 4
->       a = n0 * 1.5 + 1.5
->       b = n1 * 1.5 + 1.5
->       c = n2 * 0.5 + 1.5
->       d = n3 * 0.5 + 1.5
->   in latoocarfianC AR f a b c d 0.5 0.5 * 0.2
-
-Haskell implementation of equation.
-
-> latoocarfian_hs a b c d = map fst (iterate (latoocarfian_f a b c d) (0.5,0.5))
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plotTable1 (take 600 (latoocarfian_hs 1.0 3.0 0.5 0.5))
-    plot_ugen_nrt (600,1) 1.0 (latoocarfianC AR 600 1.0 3.0 0.5 0.5 0.5 0.5)
diff --git a/Help/UGen/leakDC.help.lhs b/Help/UGen/leakDC.help.lhs
deleted file mode 100644
--- a/Help/UGen/leakDC.help.lhs
+++ /dev/null
@@ -1,5 +0,0 @@
-> import Sound.SC3
-
-> g_01 =
->     let a = lfPulse AR 800 0 0.5 * 0.1 + 0.5
->     in mce [a,leakDC a 0.995]
diff --git a/Help/UGen/lfBrownNoise0.help.lhs b/Help/UGen/lfBrownNoise0.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfBrownNoise0.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let n = X.lfBrownNoise0 'α' AR 10 0.05 0
->       f = linExp n (-1) 1 64 9600
->   in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/lfBrownNoise2.help.lhs b/Help/UGen/lfBrownNoise2.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfBrownNoise2.help.lhs
+++ /dev/null
@@ -1,31 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let freq = 1000
->       dev = mouseX KR 0 1 Linear 0.2
->       dist = mouseY KR 0 5 Linear 0.2
->   in X.lfBrownNoise2 'α' AR freq dev dist * 0.25
-
-Use as frequency control.
-
-> g_02 =
->   let freq = 8
->       dev = mouseX KR 0 1 Linear 0.2
->       dist = mouseY KR 0 5 Linear 0.2
->       n1:n2:n3:_ = map (\z -> X.lfBrownNoise2 z KR freq dev dist) ['α'..]
->       o = impulse AR (range 6 24 n1) 0
->   in lagUD o (range 0.0001 0.001 n2) (range 0.0001 0.001 n3) * 0.5
-
-Use as pan & volume controls (external sound input)
-
-> f_01 s =
->   let freq = range 0.5 2 (X.lfBrownNoise2 'α' KR 2 0.1 5)
->       dev = mouseX KR 0.01 0.35 Linear 0.2
->       dist = mouseY KR 0 5 Linear 0.2
->       n1:n2:_ = map (\z -> X.lfBrownNoise2 z KR freq dev dist) ['β'..]
->   in pan2 s (range (-0.75) 0.75 n1) 1 * range 0.01 0.5 n2
-
-> g_03 = f_01 (soundIn 0)
-
-> g_04 = f_01 (sinOsc AR 440 0 * 0.1)
diff --git a/Help/UGen/lfClipNoise.help.lhs b/Help/UGen/lfClipNoise.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfClipNoise.help.lhs
+++ /dev/null
@@ -1,22 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = lfClipNoise 'α' AR 1000 * 0.05
-
-Modulate frequency
-
-> g_02 =
->     let f = xLine KR 1000 10000 10 RemoveSynth
->     in lfClipNoise 'α' AR f * 0.05
-
-Use as frequency control
-
-> g_03 =
->     let n = lfClipNoise 'α' KR 4
->     in sinOsc AR (n * 200 + 600) 0 * 0.1
-
-Drawings
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plot_ugen1 0.1 (lfClipNoise 'α' AR 1000)
-
-![](sw/hsc3/Help/SVG/lfClipNoise.0.svg)
diff --git a/Help/UGen/lfCub.help.lhs b/Help/UGen/lfCub.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfCub.help.lhs
+++ /dev/null
@@ -1,36 +0,0 @@
-> import Sound.SC3
-
-> g_01 = lfCub AR (lfCub KR (lfCub KR 0.2 0 * 8 + 10) 0 * 400 + 800) 0 * 0.1
-> g_02 = lfCub AR (lfCub KR 0.2 0 * 400 + 800) 0 * 0.1
-> g_03 = lfCub AR 800 0 * 0.1
-> g_04 = lfCub AR (xLine KR 100 8000 30 DoNothing) 0 * 0.1
-
-Compare w/ lfPar
-
-> g_05 = lfPar AR (lfPar KR (lfPar KR 0.2 0 * 8 + 10) 0 * 400 + 800) 0 * 0.1
-> g_06 = lfPar AR (lfPar KR 0.2 0 * 400 + 800) 0 * 0.1
-> g_07 = lfPar AR 800 0 * 0.1
-> g_08 = lfPar AR (xLine KR 100 8000 30 DoNothing) 0 * 0.1
-
-Compare w/ sinOsc
-
-> g_09 = sinOsc AR (sinOsc KR (sinOsc KR 0.2 0 * 8 + 10) 0 * 400 + 800) 0 * 0.1
-> g_11 = sinOsc AR (sinOsc KR 0.2 0 * 400 + 800) 0 * 0.1
-> g_12 = sinOsc AR 800 0 * 0.1
-> g_13 = sinOsc AR (xLine KR 100 8000 30 DoNothing) 0 * 0.1
-
-Compare w/ lfTri
-
-> g_14 = lfTri AR (lfTri KR (lfTri KR 0.2 0 * 8 + 10) 0 * 400 + 800) 0 * 0.1
-> g_15 = lfTri AR (lfTri KR 0.2 0 * 400 + 800) 0 * 0.1
-> g_16 = lfTri AR 800 0 * 0.1
-> g_17 = lfTri AR (xLine KR 100 8000 30 DoNothing) 0 * 0.1
-
-Drawings
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen 0.1 (mce2 (sinOsc AR 20 0) (lfCub AR 20 0))
-    > plot_ugen 0.1 (mce2 (sinOsc AR 20 0) (lfPar AR 20 pi))
-
-![](sw/hsc3/Help/SVG/lfCub.0.svg)
-![](sw/hsc3/Help/SVG/lfCub.1.svg)
diff --git a/Help/UGen/lfGauss.help.lhs b/Help/UGen/lfGauss.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfGauss.help.lhs
+++ /dev/null
@@ -1,108 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-modulating duration
-
-> g_01 =
->     let d = xLine KR 0.1 0.001 10 DoNothing
->     in lfGauss AR d 0.03 0 Loop DoNothing * 0.2
-
-modulating width, freq 60 Hz
-
-> g_02 =
->     let w = xLine KR 0.1 0.001 10 DoNothing
->     in lfGauss AR (1/60) w 0 Loop DoNothing * 0.2
-
-modulating both: x position is frequency, y is width factor.
-note the artefacts due to alisasing at high frequencies
-
-> g_03 =
->     let d = mouseX KR (1/8000) 0.1 Exponential 0.2
->         w = mouseY KR 0.001 0.1 Exponential 0.2
->     in lfGauss AR d w 0 Loop DoNothing * 0.1
-
-LFGauss as amplitude modulator
-
-> g_04 =
->     let d = mouseX KR 1 0.001 Exponential 0.2
->         g = lfGauss AR d 0.1 0 Loop DoNothing
->         o = sinOsc AR 1000 0
->     in g * o * 0.1
-
-modulate iphase
-
-> g_05 =
->     let ph = mouseX KR (-1) 1 Linear 0.2
->         g = lfGauss AR 0.001 0.2 (mce2 0 ph) Loop DoNothing
->     in mix g * 0.2
-
-for very small width we are "approaching" a dirac function
-
-> g_06 =
->     let w = sampleDur * mouseX KR 10 3000 Exponential 0.2
->     in lfGauss AR 0.01 w 0 Loop DoNothing * 0.2
-
-dur and width can be modulated at audio rate
-
-> g_07 =
->     let x = mouseX KR 2 1000 Exponential 0.2
->         d = range 0.0006 0.01 (sinOsc AR x 0 * mce2 1 1.1)
->         w = range 0.01 0.3 (sinOsc AR (0.5 * (mce2 1 1.1)) 0)
->     in lfGauss AR d w 0 Loop DoNothing * 0.2
-
-several frequencies and widths combined
-
-> g_08 =
->     let x = mouseX KR 1 0.07 Exponential 0.2
->         y = mouseY KR 1 3 Linear 0.2
->         g = lfGauss AR x (y ** mce [-1,-2 .. -6]) 0 Loop DoNothing
->         o = sinOsc AR (200 * (1.3 ** mce [0..5])) 0
->     in mix (g * o) * 0.1
-
-    > withSC3 (send (n_trace [-1]))
-
-Drawing
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > let plot_f tm du ph = plot_ugen1 tm (lfGauss AR du 0.12 ph Loop DoNothing)
-    > plot_f 0.1 0.1 0
-    > plot_f 0.1 0.1 (-1) -- shifting left
-    > plot_f 0.1 0.1 2 -- moving further away from the center
-    > plot_f 0.3 0.065 0 -- several grains
-
-![](sw/hsc3/Help/SVG/lfGauss.0.svg)
-![](sw/hsc3/Help/SVG/lfGauss.1.svg)
-![](sw/hsc3/Help/SVG/lfGauss.2.svg)
-![](sw/hsc3/Help/SVG/lfGauss.3.svg)
-
-gabor grain (see also 'gabor_grain_ugen_graph')
-
-> gabor =
->     let b = control IR "out" 0
->         f = control IR "freq" 440
->         s = control IR "sustain" 1
->         p = control IR "pan" 0
->         a = control IR "amp" 0.1
->         w = control IR "width" 0.25
->         e = lfGauss AR s w 0 NoLoop RemoveSynth
->         o = fSinOsc AR f (pi / 2) * e
->         u = offsetOut b (pan2 o p a)
->     in synthdef "gabor" u
-
-    > import Sound.SC3.Lang.Pattern {- hsc3-lang -}
-
-granular synthesis, modulating duration, width and pan
-
-    > paudition (pbind [(K_instr,psynth gabor)
-    >                  ,(K_freq,1000)
-    >                  ,(K_legato,2)
-    >                  ,(K_dur,pbrown 'α' 0.005 0.025 0.001 inf)
-    >                  ,(K_param "width",pbrown 'β' 0.05 0.25 0.005 inf)
-    >                  ,(K_param "pan",pbrown 'γ' (-1) 1 0.05 inf)])
-
-granular synthesis, modulating width only
-
-    > paudition (pbind [(K_instr,psynth gabor)
-    >                  ,(K_freq,1000)
-    >                  ,(K_dur,0.01)
-    >                  ,(K_param "width",pgeom 0.25 0.995 1250)
-    >                  ,(K_legato,2)])
diff --git a/Help/UGen/lfNoise0.help.lhs b/Help/UGen/lfNoise0.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfNoise0.help.lhs
+++ /dev/null
@@ -1,26 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = lfNoise0 'α' AR 1000 * 0.05
-
-Modulate frequency.
-
-> g_02 =
->     let f = xLine KR 1000 10000 10 RemoveSynth
->     in lfNoise0 'α' AR f * 0.05
-
-Use as frequency control.
-
-> g_03 =
->     let f = lfNoise0 'α' KR 4
->     in sinOsc AR (f * 400 + 450) 0 * 0.1
-
-Drawing
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen1 0.1 (lfNoise0 'γ' AR 1000)
-    > plot_ugen1 0.1 (lfNoise1 'γ' AR 1000)
-    > plot_ugen1 0.1 (lfNoise2 'γ' AR 1000)
-
-![](sw/hsc3/Help/SVG/lfNoise0.0.svg)
-![](sw/hsc3/Help/SVG/lfNoise0.1.svg)
-![](sw/hsc3/Help/SVG/lfNoise0.2.svg)
diff --git a/Help/UGen/lfNoise1.help.lhs b/Help/UGen/lfNoise1.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfNoise1.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = lfNoise1 'α' AR 1000 * 0.05
-
-Modulate frequency.
-
-> g_02 =
->   let f = xLine KR 1000 10000 10 RemoveSynth
->   in lfNoise1 'α' AR f * 0.05
-
-Use as frequency control.
-
-> g_03 =
->   let n = lfNoise1 'α' KR 4
->       f = n * 400 + 450
->   in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/lfNoise2.help.lhs b/Help/UGen/lfNoise2.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfNoise2.help.lhs
+++ /dev/null
@@ -1,22 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = lfNoise2 'α' AR 1000 * 0.05
-
-Modulate frequency.
-
-> g_02 =
->     let f = xLine KR 1000 10000 10 RemoveSynth
->     in lfNoise2 'α' AR f * 0.05
-
-Use as frequency control.
-
-> g_03 =
->     let f = lfNoise2 'α' KR 4
->     in sinOsc AR (f * 400 + 450) 0 * 0.1
-
-Drawings
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen1 0.1 (lfNoise2 'α' AR 1000)
-
-![](sw/hsc3/Help/SVG/lfNoise2.0.svg)
diff --git a/Help/UGen/lfPar.help.lhs b/Help/UGen/lfPar.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfPar.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See lfCub
diff --git a/Help/UGen/lfPulse.help.lhs b/Help/UGen/lfPulse.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfPulse.help.lhs
+++ /dev/null
@@ -1,29 +0,0 @@
-Note: SC2 had no initial phase argument.
-
-> import Sound.SC3
-
-> g_01 = let f = lfPulse KR 3 0 0.3 * 200 + 200 in lfPulse AR f 0 0.2 * 0.1
-
-> g_02 = let x = mouseX KR 0 1 Linear 0.2 in lfPulse AR 220 0 x * 0.1
-
-square wave as sum of sines.
-for odd partials n, amplitude is (1 / n), for even partials amplitude is 0.
-phase is always 0.
-
-> g_03 =
->     let mk_freq f0 n = f0 * fromInteger n
->         mk_amp n = if even n then 0 else 1 / fromInteger n
->         mk_param f0 n = let m = [1,3 .. n] in zip (map (mk_freq f0) m) (map mk_amp m)
->         x = midiCPS (mouseX KR 20 72 Linear 0.2)
->         y = mouseY KR 0.01 0.1 Exponential 0.2
->         e = xLine KR 0.01 1 20 DoNothing
->         o1 = sum (map (\(fr,am) -> sinOsc AR fr 0 * am) (mk_param x 50)) * (1 - e)
->         o2 = lfPulse AR x 0 0.5 * e
->     in mce2 o1 o2 * y
-
-Drawings
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen1 0.1 (lfPulse AR (line KR 100 800 0.1 DoNothing) 0 0.5)
-
-![](sw/hsc3/Help/SVG/lfPulse.0.svg)
diff --git a/Help/UGen/lfSaw.help.lhs b/Help/UGen/lfSaw.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfSaw.help.lhs
+++ /dev/null
@@ -1,56 +0,0 @@
-Note: SC2 did not have the initial phase argument.
-
-> import Sound.SC3
-
-> g_01 = lfSaw AR 500 1 * 0.1
-
-Used as both Oscillator and LFO.
-
-> g_02 = lfSaw AR (lfSaw KR 4 0 * 400 + 400) 0 * 0.1
-
-Output range is bi-polar.
-
-> g_03 =
->     let f = mce [linLin (lfSaw KR 0.5 0) (-1) 1 200 1600, 200, 1600]
->         a = mce [0.1,0.05,0.05]
->     in mix (sinOsc AR f 0 * a)
-
-saw-tooth wave as sum of sines.
-for all partials n, amplitude is (1 / n).
-phase is always 0.
-cross-fade from sum to lfSaw.
-
-> g_04 =
->     let mk_freq f0 n = f0 * fromInteger n
->         mk_amp n = 1 / fromInteger n
->         mk_param f0 n = let m = [1,2 .. n] in zip (map (mk_freq f0) m) (map mk_amp m)
->         x = midiCPS (mouseX KR 20 72 Linear 0.2)
->         y = mouseY KR 0.01 0.1 Exponential 0.2
->         e = xLine KR 0.01 1 20 DoNothing
->         o1 = sum (map (\(fr,am) -> sinOsc AR fr 0 * am) (mk_param x 25)) * (1 - e)
->         o2 = lfSaw AR x 0 * e
->     in mce2 o1 o2 * y
-
-as phasor input to sin function
-
-> g_05 = sin (range 0 two_pi (lfSaw AR 440 0)) * 0.2
-
-mixed with sin, then with distortions
-
-> g_06 =
->   let f = xLine KR 220 440 10 DoNothing
->       o1 = sinOsc AR (f + mce2 0 0.7) 0
->       o2 = lfSaw AR (f + mce2 0 0.7) 0 * 0.3
->       o3 = cubed (distort (log (distort (o1 + o2))))
->   in o3 * 0.1
-
-
-
-Drawings
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen1 0.1 (lfSaw AR 50 0) -- ascending
-    > plot_ugen1 0.002 (lfSaw AR 5000 0)
-
-![](sw/hsc3/Help/SVG/lfSaw.0.svg)
-![](sw/hsc3/Help/SVG/lfSaw.1.svg)
diff --git a/Help/UGen/lfTri.help.lhs b/Help/UGen/lfTri.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfTri.help.lhs
+++ /dev/null
@@ -1,29 +0,0 @@
-see <http://thread.gmane.org/gmane.comp.audio.supercollider.user/84719>
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = lfTri AR 500 1 * 0.1
-
-Used as both Oscillator and LFO.
-
-> g_02 = lfTri AR (lfTri KR 4 0 * 400 + 400) 0 * 0.1
-
-Multiple phases
-
-> g_03 = let f = lfTri KR 0.4 (mce [0..3]) * 200 + 400
->        in mix (lfTri AR f 0 * 0.1)
-
-> g_04 = let x = midiCPS (mouseX KR 20 72 Linear 0.2)
->            e = xLine KR 0.01 1 20 DoNothing
->            o1 = triAS 25 x * (1 - e)
->            o2 = lfTri AR x 0 * e
->        in mce2 o1 o2 * 0.1
-
-Drawings
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen1 0.1 (lfTri AR 40 0)
-    > plot_ugen1 0.1 (lfTri AR (xLine KR 1 800 0.1 DoNothing) 0)
-
-![](sw/hsc3/Help/SVG/lfTri.0.svg)
-![](sw/hsc3/Help/SVG/lfTri.1.svg)
diff --git a/Help/UGen/lfdClipNoise.help.lhs b/Help/UGen/lfdClipNoise.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfdClipNoise.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-for fast x lfClipNoise frequently seems stuck, lfdClipNoise changes smoothly
-
-> g_01 =
->   let x = mouseX KR 0.1 1000 Exponential 0.2
->       n = lfdClipNoise 'α' AR x
->   in sinOsc AR (n * 200 + 500) 0 * 0.05
-
-> g_02 =
->   let x = mouseX KR 0.1 1000 Exponential 0.2
->       n = lfClipNoise 'β' AR x
->   in sinOsc AR (n * 200 + 500) 0 * 0.05
-
-lfClipNoise quantizes time steps at high freqs, lfdClipNoise does not:
-
-> g_03 =
->   let f = xLine KR 1000 20000 10 RemoveSynth
->   in lfdClipNoise 'γ' AR f * 0.05
-
-> g_04 =
->   let f = xLine KR 1000 20000 10 RemoveSynth
->   in lfClipNoise 'δ' AR f * 0.05
diff --git a/Help/UGen/lfdNoise0.help.lhs b/Help/UGen/lfdNoise0.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfdNoise0.help.lhs
+++ /dev/null
@@ -1,30 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-for fast x LFNoise frequently seems stuck, LFDNoise changes smoothly
-
-> g_01 = lfdNoise0 'a' AR (mouseX KR 0.1 1000 Exponential 0.2) * 0.1
-
-> g_02 = lfNoise0 'a' AR (mouseX KR 0.1 1000 Exponential 0.2) * 0.1
-
-silent for 2 secs before going up in freq
-
-> g_03 = lfdNoise0 'a' AR (xLine KR 0.5 10000 3 RemoveSynth)
-
-> g_04 = lfNoise0 'a' AR (xLine KR 0.5 10000 3 RemoveSynth)
-
-LFNoise quantizes time steps at high freqs, LFDNoise does not:
-
-> g_05 = lfdNoise0 'a' AR (xLine KR 1000 20000 10 RemoveSynth)
-
-> g_06 = lfNoise0 'a' AR (xLine KR 1000 20000 10 RemoveSynth)
-
-Drawings
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plot_ugen1 0.1 (lfdNoise0 'γ' AR 1000)
-    plot_ugen1 0.1 (lfdNoise1 'γ' AR 1000)
-    plot_ugen1 0.1 (lfdNoise3 'γ' AR 1000)
-
-![](sw/hsc3/Help/SVG/lfdNoise0.0.svg)
-![](sw/hsc3/Help/SVG/lfdNoise0.1.svg)
-![](sw/hsc3/Help/SVG/lfdNoise0.2.svg)
diff --git a/Help/UGen/lfdNoise1.help.lhs b/Help/UGen/lfdNoise1.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfdNoise1.help.lhs
+++ /dev/null
@@ -1,4 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "LFDNoise1"
-> Sound.SC3.UGen.DB.ugenSummary "LFDNoise1"
-
-See lfdNoise0
diff --git a/Help/UGen/lfdNoise3.help.lhs b/Help/UGen/lfdNoise3.help.lhs
deleted file mode 100644
--- a/Help/UGen/lfdNoise3.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-See lfdNoise0
-
-Drawings
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = lfdNoise3 'α' AR (xLine AR 1000 100 0.1 DoNothing)
-
-    > Sound.SC3.Plot.plot_ugen1 0.1 g_01
-
-![](sw/hsc3/Help/SVG/lfdNoise3.0.svg)
-
diff --git a/Help/UGen/limiter.help.lhs b/Help/UGen/limiter.help.lhs
deleted file mode 100644
--- a/Help/UGen/limiter.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "Limiter"
-> Sound.SC3.UGen.DB.ugenSummary "Limiter"
-
-> import Sound.SC3
-
-example signal
-> let z = let i = impulse AR 8 0 * lfSaw KR 0.25 0 * (-0.6) + 0.7
->         in decay2 i 0.001 0.3 * fSinOsc AR 500 0
-
-unprocessed
-> audition (out 0 z)
-
-limited
-> audition (out 0 (limiter z 0.4 0.01))
diff --git a/Help/UGen/linCongC.help.lhs b/Help/UGen/linCongC.help.lhs
deleted file mode 100644
--- a/Help/UGen/linCongC.help.lhs
+++ /dev/null
@@ -1,28 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.Common.Math.Noise {- hsc3 -}
-
-Default SC3 initial parameters.
-
-> g_00 = linCongC AR 22050 1.1 0.13 1 0 * 0.2
-
-> g_01 =
->   let x = mouseX KR 20 sampleRate Linear 0.1
->   in linCongC AR x 1.1 0.13 1 0 * 0.2
-
-Randomly modulate parameters.
-
-> g_02 =
->   let fr = [1,0.1,0.1,0.1]
->       [n0,n1,n2,m] = map (\(i,j) -> lfNoise2 i KR j) (zip ['α'..] fr)
->       f = n0 * 1e4 + 1e4
->       a = n1 * 0.5 + 1.4
->       c = n2 * 0.1 + 0.1
->   in linCongC AR f a c m 0 * 0.2
-
-Haskell implementation of equation.
-
-> linCong_hs a c m = iterate (linCong_f a c m) 0
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plotTable1 (take 600 (linCong_hs 1.1 0.13 1.0))
-    plot_ugen_nrt (600,1) 1.0 (linCongC AR 600 1.1 0.13 1.0 0.0)
diff --git a/Help/UGen/linCongL.help.lhs b/Help/UGen/linCongL.help.lhs
deleted file mode 100644
--- a/Help/UGen/linCongL.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See linCongC
diff --git a/Help/UGen/linCongN.help.lhs b/Help/UGen/linCongN.help.lhs
deleted file mode 100644
--- a/Help/UGen/linCongN.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See linCongC
diff --git a/Help/UGen/linExp.help.lhs b/Help/UGen/linExp.help.lhs
deleted file mode 100644
--- a/Help/UGen/linExp.help.lhs
+++ /dev/null
@@ -1,29 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-{var mod = SinOsc.kr(Line.kr(1, 10, 10)); SinOsc.ar(mod * 400 + 500) * 0.1}.play
-
-> g_01 =
->   let mod = sinOsc KR (line KR 1 10 10 DoNothing) 0
->   in sinOsc AR (mod * 400 + 500) 0 * 0.1
-
-{var mod = SinOsc.kr(Line.kr(1, 10, 10)); SinOsc.ar(LinExp.kr(mod, -1,1, 100, 900)) * 0.1}.play
-
-> g_02 =
->   let mod = sinOsc KR (line KR 1 10 10 DoNothing) 0
->   in sinOsc AR (linExp mod (-1) 1 100 900) 0 * 0.1
-
-> g_03 =
->     let f = linExp (mouseX KR 0 1 Linear 0.2) 0 1 440 660
->     in sinOsc AR f 0 * 0.1
-
-The destination range may be k-rate.
-
-> g_04 =
->     let x = mouseX KR 0 1 Linear 0.2
->         y = mouseY KR 220 440 Linear 0.2
->         f = linExp x 0 1 y 660
->     in sinOsc AR f 0 * 0.1
-
-i-rate...
-
-> g_05 = sinOsc AR (linExp (rand 'α' 0 1) 0 1 220 440) 0 * 0.1
diff --git a/Help/UGen/linLin.help.lhs b/Help/UGen/linLin.help.lhs
deleted file mode 100644
--- a/Help/UGen/linLin.help.lhs
+++ /dev/null
@@ -1,24 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-linLin is a function for writing a MulAdd UGen.
-
-> g_01 =
->     let f = linLin (mouseX KR 0 1 Linear 0.2) 0 1 440 660
->     in sinOsc AR f 0 * 0.1
-
-The destination range may be k-rate.
-
-> g_02 =
->     let x = mouseX KR 0 1 Linear 0.2
->         y = mouseY KR 220 440 Linear 0.2
->         f = linLin x 0 1 y 660
->     in sinOsc AR f 0 * 0.1
-
-Modulating source and destination values.
-
-> g_03 =
->     let n = lfNoise2 'α' AR 80
->         x = mouseX KR 200 8000 Linear 0.2
->         y = mouseY KR 200 8000 Linear 0.2
->         f = linLin n (sinOsc KR 0.2 0) (sinOsc KR 0.2543 0) x y
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/linPan2.help.lhs b/Help/UGen/linPan2.help.lhs
deleted file mode 100644
--- a/Help/UGen/linPan2.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = pinkNoise 'α' AR
->     in linPan2 n (fSinOsc KR 2 0) 0.1
-
-> g_02 = linPan2 (fSinOsc AR 800 0) (fSinOsc KR 3 0) 0.1
diff --git a/Help/UGen/linRand.help.lhs b/Help/UGen/linRand.help.lhs
deleted file mode 100644
--- a/Help/UGen/linRand.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let f = linRand 'α' 200.0 10000.0 (mce [-1, 1])
->       e = line KR 0.4 0 0.01 RemoveSynth
->   in fSinOsc AR f 0 * e
diff --git a/Help/UGen/linXFade2.help.lhs b/Help/UGen/linXFade2.help.lhs
deleted file mode 100644
--- a/Help/UGen/linXFade2.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = linXFade2 (saw AR 440) (sinOsc AR 440 0) (lfTri KR 0.1 0) 0.1
-
-> f_01 ty = ty
->           (fSinOsc AR 800 0 * 0.2)
->           (pinkNoise 'α' AR * 0.2)
->           (fSinOsc KR 0.5 0)
->           1.0
-
-> g_02 = f_01 linXFade2
-
-> g_03 = f_01 xFade2
diff --git a/Help/UGen/line.help.lhs b/Help/UGen/line.help.lhs
deleted file mode 100644
--- a/Help/UGen/line.help.lhs
+++ /dev/null
@@ -1,18 +0,0 @@
-Note: SC3 reorders the mul and add inputs to precede the doneAction input.
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let f = line KR 200 17000 5 RemoveSynth
->   in sinOsc AR f 0 * 0.1
-
-Demonstrate RemoveGroup done-action.
-
-    > import Sound.OSC {- hosc -}
-    > withSC3 (sendMessage (g_new [(10,AddToTail,1)]))
-
-> g_02 =
->    let f = line KR 200 (mce2 209 211) 5 RemoveGroup
->    in sinOsc AR f 0 * 0.1
-
-    > audition_at (-1,AddToTail,10,[]) (out 0 g_02)
diff --git a/Help/UGen/linen.help.lhs b/Help/UGen/linen.help.lhs
deleted file mode 100644
--- a/Help/UGen/linen.help.lhs
+++ /dev/null
@@ -1,11 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let e = linen (impulse KR 2 0) 0.01 0.6 0.4 DoNothing
->     in e * sinOsc AR 440 0 * 0.1
-
-> g_02 =
->     let x = mouseX KR (-1) 1 Linear 0.1
->         y = mouseY KR 0.01 0.25 Linear 0.1
->         e = linen x 1 y 1.0 DoNothing
->     in sinOsc AR 440 0 * e
diff --git a/Help/UGen/localBuf.help.lhs b/Help/UGen/localBuf.help.lhs
deleted file mode 100644
--- a/Help/UGen/localBuf.help.lhs
+++ /dev/null
@@ -1,80 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Allocate a buffer local to the synthesis graph, 1-channel, 2048
-
-> g_01 =
->     let nc = 1
->         nf = 2048
->         buf = localBuf 'α' nc nf
->         f = fft' buf (whiteNoise 'β' AR)
->         c = pv_BrickWall f (sinOsc KR 0.1 0 * 0.75)
->     in ifft' c * 0.1
-
-Variant with two local buffers
-
-> g_02 =
->     let dup (p,q) f = mce2 (f p) (f q)
->         n = dup ('α','β') (\z -> whiteNoise z AR)
->         b = dup ('γ','δ') (\z -> localBuf z 1 2048)
->         f = fft' b n
->         c = pv_BrickWall f (sinOsc KR (mce2 0.1 0.11) 0 * 0.75)
->     in ifft' c * 0.1
-
-Not clearing the buffer accesses old data, slowly overwrite data with noise
-
-> g_03 =
->     let dup (p,q) f = mce2 (f p) (f q)
->         b = localBuf 'α' 2 2048
->         nf = bufFrames KR b
->         x = mouseX KR 1 2 Linear 0.2
->         r = playBuf 2 AR b x 1 0 Loop DoNothing * 0.1
->         wr p i = bufWr b (linLin p (-1) 1 0 nf) Loop i
->         n = dup ('β','γ') (\z -> whiteNoise z AR)
->         ph = lfNoise0 'δ' AR 530
->     in mrg2 r (wr ph n)
-
-bufCombC needs no clearing, because the delay line is filled by the ugen
-
-> g_04 =
->     let dup (p,q) f = mce2 (f p) (f q)
->         d = dup ('α','β') (\z -> dust z AR 1)
->         n = whiteNoise 'γ' AR
->         z = decay d 0.3 * n
->         l = xLine KR 0.0001 0.01 20 DoNothing
->         sr = sampleRate
->         b = dup ('δ','ε') (\z -> localBuf z 2 sr)
->     in bufCombC b z l 0.2
-
-asLocalBuf combines localBuf and setBuf
-
-> g_05 =
->     let b = asLocalBuf 'α' [2,1,5,3,4,0]
->         x = mouseX KR 0 (bufFrames KR b) Linear 0.2
->         f = indexL b x * 100 + 40
->     in saw AR (f * mce2 1 1.1) * 0.1
-
-detectIndex example using local buffer
-
-> g_06 =
->     let b = asLocalBuf 'α' [2,3,4,0,1,5]
->         n = bufFrames KR b
->         x = floorE (mouseX KR 0 n Linear 0.1)
->         i = detectIndex b x
->     in sinOsc AR (linExp i 0 n 200 700) 0 * 0.1
-
-degreeToKey example ('modal space') using local buffer
-
-> g_07 =
->     let n = lfNoise1 'α' KR (mce [3,3.05])
->         x = mouseX KR 0 15 Linear 0.1
->         b = asLocalBuf 'β' [0,2,3.2,5,7,9,10]
->         k = degreeToKey b x 12
->         mk_c bf = let f0 = midiCPS (bf + k + n * 0.04)
->                       o = sinOsc AR f0 0 * 0.1
->                       f1 = midiCPS (mce [48,55])
->                       t = lfPulse AR f1 0.15 0.5
->                       f2 = midiCPS (sinOsc KR 0.1 0 * 10 + bf)
->                       d = rlpf t f2 0.1 * 0.1
->                       m = o + d
->                   in combN m 0.31 0.31 2 + m
->     in (mk_c 48 + mk_c 72) * 0.25
diff --git a/Help/UGen/localIn.help.lhs b/Help/UGen/localIn.help.lhs
deleted file mode 100644
--- a/Help/UGen/localIn.help.lhs
+++ /dev/null
@@ -1,36 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> noise_signal =
->     let e = decay (impulse AR 0.3 0) 0.1
->     in whiteNoise 'α' AR * e * 0.2
-
-> outside_world = soundIn 0
-
-> ping_pong z =
->     let a1 = localIn 2 AR 0 + mce [z,0]
->         a2 = delayN a1 0.2 0.2
->         a3 = mceEdit reverse a2 * 0.8
->     in mrg [z + a2,localOut a3]
-
-> g_01 = ping_pong noise_signal
-> g_02 = ping_pong outside_world
-
-> rotate2_mce z p =
->     case mceChannels z of
->       [l,r] -> rotate2 l r p
->       _ -> error "rotate2_mce"
-
-> tape_delay dt fb z =
->     let a = amplitude KR (mix z) 0.01 0.01
->         z' = z * (a >** 0.02)
->         l0 = localIn 2 AR 0
->         l1 = onePole l0 0.4
->         l2 = onePole l1 (-0.08)
->         l3 = rotate2_mce l2 0.2
->         l4 = delayN l3 dt dt
->         l5 = leakDC l4 0.995
->         l6 = softClip ((l5 + z') * fb)
->     in mrg2 (l6 * 0.1) (localOut l6)
-
-> g_03 = tape_delay 0.35 1.20 noise_signal
-> g_04 = tape_delay 0.25 1.25 outside_world
diff --git a/Help/UGen/localOut.help.lhs b/Help/UGen/localOut.help.lhs
deleted file mode 100644
--- a/Help/UGen/localOut.help.lhs
+++ /dev/null
@@ -1,22 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Resonator, must subtract blockSize for correct tuning
-
-> g_01 =
->     let p = localIn 1 AR 0
->         i = impulse AR 1 0
->         d = delayC (i + (p * 0.995)) 1 (recip 440 - recip controlRate)
->     in mrg [offsetOut 0 p,localOut d]
-
-Compare with oscillator.
-
-> g_02 = sinOsc AR 440 0 * 0.2
-
-ping pong
-
-> g_03 =
->     let n = decay (impulse AR 0.3 0) 0.1 * whiteNoise 'α' AR * 0.2
->         l = localIn 2 AR 0 + mce2 n 0
->         d = delayN l 0.2 0.2
->         o = localOut (mceReverse d * 0.8)
->     in mrg2 d o
diff --git a/Help/UGen/logistic.help.lhs b/Help/UGen/logistic.help.lhs
deleted file mode 100644
--- a/Help/UGen/logistic.help.lhs
+++ /dev/null
@@ -1,18 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-SC3 default parameters
-
-> g_00 = logistic AR 3 1000 0.5
-
-> g_01 = logistic AR 3.95 sampleRate 0.5
-
-Onset of chaos
-
-> g_02 = logistic AR (line KR 3.55 3.6 5 DoNothing) 1000 0.01
-
-Mouse control
-
-> g_03 =
->   let x = mouseX KR 3 3.99 Linear 0.1
->       y = mouseY KR 10 10000 Exponential 0.1
->   in logistic AR x y 0.25 * 0.5
diff --git a/Help/UGen/loopBuf.help.lhs b/Help/UGen/loopBuf.help.lhs
deleted file mode 100644
--- a/Help/UGen/loopBuf.help.lhs
+++ /dev/null
@@ -1,59 +0,0 @@
-    mapM_ Sound.SC3.UGen.DB.ugenSummary ["LoopBuf","PlayBuf"]
-
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-Read audio file into memory
-
-> fn_01 = "/home/rohan/rd/j/2019-04-21/FAIRLIGHT/IIX/REEDS/clarmdhi.snd"
-
-> ld fn b = withSC3 (async (b_allocRead b fn 0 0))
-
-Simple sampler instrument
-
-> lb0 =
->     let ou = control KR "out" 0
->         bf = control KR "bufnum" 0
->         rt = control KR "rate" 1
->         gl = control KR "glide" 0
->         gt = control KR "gate" 1
->         lr = control KR "loopRel" 0
->         sp = control KR "startPos" 0
->         sl = control KR "startLoop" 0 -- FRAME
->         el = control KR "endLoop" 0 -- FRAME
->         ip = control KR "ipol" 2
->         am = control KR "amp" 1
->         rt' = lag rt gl * bufRateScale KR bf
->         e = let d = envADSR 0.1 0.2 1 2 1 (EnvNum (-4)) 0
->             in envGen AR gt 1 0 1 RemoveSynth d
->         s = X.loopBuf 1 AR bf rt' (gt + lr) sp sl el ip
->     in out ou (s * e * am)
-
-> lb0s :: Synthdef
-> lb0s = synthdef "lb0" lb0
-
-    ld fn_01 0
-    withSC3 (async (d_recv lb0s))
-
-    import Sound.OSC {- hosc -}
-    let send = sendMessage
-    let run = withSC3 . send
-
-    audition (sinOsc AR (midiCPS 69) 0 * 0.2)
-    run (s_new "lb0" 3000 AddToTail 1 [("bufnum",0),("amp",0.1),("startLoop",5376),("endLoop",5504)])
-
-    run (n_set1 3000 "amp" 0.25) -- louder
-    run (n_set1 3000 "rate" (-1)) -- backwards
-    run (n_set1 3000 "rate" 1) -- forwards
-    run (n_set 3000 [("startLoop",11000),("endLoop",13000)]) -- change loop points
-    run (n_set1 3000 "glide" 5) -- 5 second glide
-    run (n_set1 3000 "rate" 2) -- up an octave
-    run (n_set1 3000 "rate" (-1)) -- backwards
-    run (n_set1 3000 "rate" 1) -- back to normal
-    run (n_set1 3000 "ipol" 1) -- no interpolation
-    run (n_set1 3000 "ipol" 2) -- linear interpolation
-    run (n_set1 3000 "ipol" 4) -- cubic interpolation
-    run (n_set1 3000 "gate" 0) -- release gate to hear post-loop
-
-    run (s_new "lb0" 3000 AddToTail 1 [("bufnum",0),("startLoop",5000),("endLoop",15000)])
-    run (n_set 3000 [("loopRel",1),("gate",0)]) -- release instrument without post-loop
diff --git a/Help/UGen/lorenzL.help.lhs b/Help/UGen/lorenzL.help.lhs
deleted file mode 100644
--- a/Help/UGen/lorenzL.help.lhs
+++ /dev/null
@@ -1,32 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Default parameters
-
-> g_00 = lorenzL AR (sampleRate / 2) 10 28 2.667 0.05 0.1 0 0 * 0.2
-
-Vary frequency
-
-> g_01 =
->     let x = mouseX KR 20 sampleRate Linear 0.1
->     in lorenzL AR x 10 27 2.667 0.05 0.1 0 0 * 0.3
-
-Randomly modulate params
-
-> g_02 =
->     let n e = lfNoise0 e KR 0.5
->         n0 = mul_add (n 'α') 2 10
->         n1 = mul_add (n 'β') 20 38
->         n2 = mul_add (n 'γ') 1.5 2
->     in lorenzL AR sampleRate n0 n1 n2 0.05 0.1 0 0 * 0.2
-
-As frequency control
-
-> g_03 =
->     let x = mouseX KR 1 200 Linear 0.1
->         n = lorenzL AR x 10 28 2.667 0.05 0.1 0 0
->     in sinOsc AR (lag n 0.003 * 800 + 900) 0 * 0.4
-
-> g_04 =
->     let x = mouseX KR 1 200 Linear 0.1
->         n = lorenzL AR x 10 28 2.667 0.05 0.1 0 0
->     in impulse AR (n * 4 + 8) 0 * 0.4
diff --git a/Help/UGen/lorenzTrig.help.lhs b/Help/UGen/lorenzTrig.help.lhs
deleted file mode 100644
--- a/Help/UGen/lorenzTrig.help.lhs
+++ /dev/null
@@ -1,24 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> f_01 minfreq maxfreq s b =
->   let r = 28
->       h = 0.02
->       x0 = 0.090879182417163
->       y0 = 2.97077458055
->       z0 = 24.282041054363
->   in X.lorenzTrig AR minfreq maxfreq s r b h x0 y0 z0
-
-> f_02 = f_01 11025 44100
-
-> g_01 = f_02 10 2.6666667
-
-Randomly modulate params
-
-> g_02 = f_02 (lfNoise0 'α' KR 1 * 2 + 10) (lfNoise0 'β' KR 1 * 1.5 + 2)
-
-as a frequency control
-
-> g_03 =
->   let n = f_01 1 8 10 28
->   in sinOsc AR (decay n 1.0 * 800 + 900) 0 * 0.4
diff --git a/Help/UGen/loudness.help.lhs b/Help/UGen/loudness.help.lhs
deleted file mode 100644
--- a/Help/UGen/loudness.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Assume hop of half fftsize
-
-    > withSC3 (async (b_alloc 10 1024 1))
-
-> g_01 =
->     let x = mouseX KR 0.001 0.1 Exponential 0.2
->         i = sinOsc AR 1000 0 * x
->         f = fft' 10 i
->         l = loudness f 0.25 6
->     in sinOsc AR (mce2 900 (l * 300 + 600)) 0 * 0.1
diff --git a/Help/UGen/lpcAnalyzer.help.lhs b/Help/UGen/lpcAnalyzer.help.lhs
deleted file mode 100644
--- a/Help/UGen/lpcAnalyzer.help.lhs
+++ /dev/null
@@ -1,18 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 = X.lpcAnalyzer (soundIn 0) (impulse AR 440 0 * 0.2) 256 50 0 0.999 0
-
-> g_02 = X.lpcAnalyzer (soundIn 0) (impulse AR 440 0 * 0.2) 256 50 0 0.999 1
-
-> g_03 =
->   let x = mouseX KR 1 128 Linear 0.2
->   in X.lpcAnalyzer (soundIn 0) (impulse AR 440 0 * 0.2) 128 x 0 0.999 0
-
-> g_04 =
->   let x = mouseX KR 1 128 Linear 0.2
->   in X.lpcAnalyzer (soundIn 0) (impulse AR 440 0 * 0.2) 1024 x 0 0.999 1
-
-> g_05 =
->   let x = mouseX KR 1 256 Linear 0.2
->   in X.lpcAnalyzer (soundIn 0) (whiteNoise 'α' AR * 0.1) 256 x 0 0.999 0
diff --git a/Help/UGen/lpf.help.lhs b/Help/UGen/lpf.help.lhs
deleted file mode 100644
--- a/Help/UGen/lpf.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let f = xLine KR 0.7 300 20 RemoveSynth
->         ff = fSinOsc KR f 0 * 3600 + 4000
->     in lpf (saw AR 200 * 0.1) ff
-
-Control rate filtering.
-
-> g_02 =
->     let ctl = lpf (lfPulse KR 8 0 0.5) (mouseX KR 2 50 Exponential 0.1)
->     in sinOsc AR (ctl * 200 + 400) 0 * 0.1
diff --git a/Help/UGen/lpz1.help.lhs b/Help/UGen/lpz1.help.lhs
deleted file mode 100644
--- a/Help/UGen/lpz1.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "LPZ1"
-> Sound.SC3.UGen.DB.ugenSummary "LPZ1"
-
-> import Sound.SC3
-
-> let n = whiteNoise 'α' AR * 0.1
-> in audition (out 0 (mce2 n (lpz1 n)))
diff --git a/Help/UGen/lpz2.help.lhs b/Help/UGen/lpz2.help.lhs
deleted file mode 100644
--- a/Help/UGen/lpz2.help.lhs
+++ /dev/null
@@ -1,5 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let n = whiteNoise 'α' AR
->   in lpz2 (n * 0.25)
diff --git a/Help/UGen/lti.help.lhs b/Help/UGen/lti.help.lhs
deleted file mode 100644
--- a/Help/UGen/lti.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->     let a = [0.02,-0.01]
->         b = [1,0.7,0,0,0,0,-0.8,0,0,0,0,0.9,0,0,0,-0.5,0,0,0,0,0,0,0.25,0.1,0.25]
->         z = pinkNoise 'α' AR * 0.1
->     in X.lti AR z (asLocalBuf 'β' a) (asLocalBuf 'γ' b)
diff --git a/Help/UGen/mantissaMask.help.lhs b/Help/UGen/mantissaMask.help.lhs
deleted file mode 100644
--- a/Help/UGen/mantissaMask.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "MantissaMask"
-> Sound.SC3.UGen.DB.ugenSummary "MantissaMask"
-
-> import Sound.SC3
-
-> let s = sinOsc AR (sinOsc KR 0.2 0 * 400 + 500) 0 * 0.4
-> in audition (out 0 (mantissaMask s 3))
diff --git a/Help/UGen/max.help.lhs b/Help/UGen/max.help.lhs
deleted file mode 100644
--- a/Help/UGen/max.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-q modulates and envelopes p
-
-> g_01 =
->     let p = fSinOsc AR 500 0 * 0.25
->         q = fSinOsc AR 0.5 0
->     in p `max` q
diff --git a/Help/UGen/median.help.lhs b/Help/UGen/median.help.lhs
deleted file mode 100644
--- a/Help/UGen/median.help.lhs
+++ /dev/null
@@ -1,26 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "Median"
-> Sound.SC3.UGen.DB.ugenSummary "Median"
-
-> import Sound.SC3
-
-Signal with impulse noise.
-
-> let n = dust2 'α' AR 100
-> in audition (out 0 (median 3 (saw AR 500 * 0.1 + n * 0.9)))
-
-The median length can be increased for longer duration noise.
-
-> let n = dust2 'α' AR 100
-> in audition (out 0 (median 5 (saw AR 500 * 0.1 + lpz1 (n * 0.9))))
-
-Long Median filters begin chopping off the peaks of the waveform
-
-> let x = sinOsc AR 1000 0 * 0.2
-> in audition (out 0 (mce [x, median 31 x]))
-
-Another noise reduction application. Use Median filter for high
-frequency noise.  Use LeakDC for low frequency noise.
-
-> let {n = whiteNoise 'α' AR
->     ;s = median 31 (n * 0.1 + sinOsc AR 800 0 * 0.1)}
-> in audition (out 0 (leakDC s 0.9))
diff --git a/Help/UGen/membraneCircle.help.lhs b/Help/UGen/membraneCircle.help.lhs
deleted file mode 100644
--- a/Help/UGen/membraneCircle.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}
-
-Excite the mesh with some pink noise, triggered by an
-impulse generator.  mouseX is tension and impulse frequency,
-mouseY is duration of excitation, release-time and amplitude.
-
-> g_01 =
->   let x = mouseX KR 0 1 Linear 0.2
->       y = mouseY KR 1e-9 1 Exponential 0.2
->       loss = linLin y 0 1 0.999999 0.999
->       wobble = sinOsc KR 2 0
->       tension = linLin x 0 1 0.01 0.1 + (wobble * 0.0001)
->       p = envPerc 0.0001 y
->       tr = impulse KR (linLin x 0 1 3 9) 0
->       e = envGen KR tr (linLin y 0 1 0.05 0.25) 0 0.1 DoNothing p
->   in membraneCircle AR (pinkNoise 'α' AR * e) tension loss
diff --git a/Help/UGen/membraneHexagon.help.lhs b/Help/UGen/membraneHexagon.help.lhs
deleted file mode 100644
--- a/Help/UGen/membraneHexagon.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See membraneCircle
diff --git a/Help/UGen/metro.help.lhs b/Help/UGen/metro.help.lhs
deleted file mode 100644
--- a/Help/UGen/metro.help.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 = X.metro AR 60 1
-
-> g_02 =
->   let b = xLine KR 60 120 5 DoNothing
->       m = X.metro KR b 1
->       o = sinOsc AR 440 0 * 0.1
->   in decay m 0.2 * o
-
-> g_03 =
->   let b = range 30 240 (lfNoise2 'α' KR 0.2)
->       n = dseq 'β' dinf (mce [1,0.25,0.5,0.25])
->   in decay (X.metro KR b n) 0.2 * sinOsc AR 440 0 * 0.1
diff --git a/Help/UGen/midEQ.help.lhs b/Help/UGen/midEQ.help.lhs
deleted file mode 100644
--- a/Help/UGen/midEQ.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let f = midiCPS (fSinOsc KR 1 0 * 24 + 84)
->     in midEQ (saw AR 200 * 0.2) f 0.3 12
-
-> g_02 =
->     let i = pinkNoise 'α' AR * 0.2 + sinOsc AR 600 0 * 0.1
->         f = sinOsc KR 0.2 (0.5 * pi) * 2 + 600
->     in midEQ i f 0.01 (-24)
diff --git a/Help/UGen/mix.help.lhs b/Help/UGen/mix.help.lhs
deleted file mode 100644
--- a/Help/UGen/mix.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-optimized summation (see sum_opt), ie. Sum3
-
-> g_01 = mix (mce [pinkNoise 'α' AR,fSinOsc AR 801 0,lfSaw AR 40 0]) * 0.1
-
-and Sum4
-
-> g_02 = mix (sinOsc AR (mce (take 10 (iterate (* 2) 36))) 0) * 0.05
diff --git a/Help/UGen/mod.help.lhs b/Help/UGen/mod.help.lhs
deleted file mode 100644
--- a/Help/UGen/mod.help.lhs
+++ /dev/null
@@ -1,3 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = fSinOsc AR 100 4 `modE` 1 * 0.1
diff --git a/Help/UGen/moogFF.help.lhs b/Help/UGen/moogFF.help.lhs
deleted file mode 100644
--- a/Help/UGen/moogFF.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = whiteNoise 'α' AR
->         y = mouseY KR 100 10000 Exponential 0.1
->         x = mouseX KR 0 4 Linear 0.1
->     in moogFF (n * 0.1) y x 0
-
-Note distortion at high gain.
-
-> g_02 =
->     let x = mouseX KR 100 20000 Exponential 0.1
->         y = mouseY KR 0.1 4.0 Linear 0.1
->         i = mix (saw AR (mce [0.99, 1, 1.01] * 440)) * 0.3
->     in moogFF i x y 0
-
-> g_03 =
->     let n = lfNoise0 'α' KR 0.43
->         p = pulse AR (mce [40, 121]) (mce [0.3, 0.7])
->         f0 = linLin n 0 1 0.001 2.2
->         f = linLin (sinOsc KR f0 0) (-1) 1 30 4200
->         y = mouseY KR 1 4 Linear 0.1
->     in moogFF p f (0.83 * y) 0
diff --git a/Help/UGen/moogLadder.help.lhs b/Help/UGen/moogLadder.help.lhs
deleted file mode 100644
--- a/Help/UGen/moogLadder.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let o = mix (lfSaw AR (mce2 120 180) 0 * 0.33)
->       cf = linExp (lfCub KR 0.1 (0.5 * pi)) (-1) 1 180 8500
->   in X.moogLadder o cf 0.75
-
-> g_02 =
->   let n = dust 'α' AR 3
->   in X.moogLadder n 2000 (mouseY KR 0 1 Linear 0.2)
-
diff --git a/Help/UGen/moogVCF.help.lhs b/Help/UGen/moogVCF.help.lhs
deleted file mode 100644
--- a/Help/UGen/moogVCF.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}
-
-> g_01 =
->   let o = mix (lfSaw AR (mce2 120 180) 0 * 0.33)
->       cf = linExp (lfCub KR 0.1 (0.5 * pi)) (-1) 1 180 8500
->   in moogVCF o cf 0.75
-
-> g_02 =
->   let o = pulse AR (mce2 40 121) (mce2 0.3 0.7)
->       cf = range 30 4200 (sinOsc KR (range 0.001 2.2 (lfNoise0 'α' KR 0.42)) 0)
->   in moogVCF o cf 0.8
diff --git a/Help/UGen/mostChange.help.lhs b/Help/UGen/mostChange.help.lhs
deleted file mode 100644
--- a/Help/UGen/mostChange.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = lfNoise0 'α' KR 1
->         x = mouseX KR 200 300 Linear 0.1
->         f = mostChange (n * 400 + 900) x
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/mouseButton.help.lhs b/Help/UGen/mouseButton.help.lhs
deleted file mode 100644
--- a/Help/UGen/mouseButton.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-As amplitude envelope
-
-> g_01 = sinOsc AR 800 0 * mouseButton KR 0 0.1 0.1
-
-There is a variant that randomly presses the button.
-
-> g_02 = sinOsc AR 800 0 * mouseButton' KR 0 0.1 0.1
diff --git a/Help/UGen/mouseX.help.lhs b/Help/UGen/mouseX.help.lhs
deleted file mode 100644
--- a/Help/UGen/mouseX.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-> import Sound.SC3
-
-> e_01 = map from_warp [Linear,Exponential]
-
-    e_01 == [0,1]
-
-Frequency control
-
-> g_01 =
->     let x = mouseX KR 40 10000 Exponential 0.2
->     in sinOsc AR x 0 * 0.1
-
-There is a variant with equal arguments but random traversal.
-
-> g_02 =
->     let x = mouseX' KR 40 10000 Exponential 0.2
->     in sinOsc AR x 0 * 0.1
diff --git a/Help/UGen/mouseY.help.lhs b/Help/UGen/mouseY.help.lhs
deleted file mode 100644
--- a/Help/UGen/mouseY.help.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Frequency at X axis and amplitude at Y axis.
-
-> g_01 =
->     let freq = mouseX KR 20 2000 Exponential 0.1
->         ampl = mouseY KR 0.01 0.1 Linear 0.1
->     in sinOsc AR freq 0 * ampl
-
-There is a variant with equal arguments but a random traversal.
-
-> g_02 =
->     let freq = mouseX' KR 20 2000 Exponential 0.1
->         ampl = mouseY' KR 0.01 0.1 Linear 0.1
->     in sinOsc AR freq 0 * ampl
diff --git a/Help/UGen/mrg2.help.lhs b/Help/UGen/mrg2.help.lhs
deleted file mode 100644
--- a/Help/UGen/mrg2.help.lhs
+++ /dev/null
@@ -1,30 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-mrg2 defines a node indicating a multiple root graph.
-
-> g_01 =
->   let l = out 0 (sinOsc AR 300 0 * 0.1)
->       r = out 1 (sinOsc AR 900 0 * 0.1)
->   in mrg2 l r
-
-there is a leftmost rule, so that mrg nodes need not
-be terminal.
-
-> g_02 =
->   let l = sinOsc AR 300 0 * 0.1
->       r = out 1 (sinOsc AR 900 0 * 0.1)
->   in mrg2 l r
-
-the leftmost node may be an mce node
-
-> g_03 =
->   let l = sinOsc AR (mce2 300 400) 0 * 0.1
->       r = out 1 (sinOsc AR 900 0 * 0.1)
->   in mrg2 l r
-
-the implementation is not thorough
-
-> g_04 =
->   let l = sinOsc AR (mce2 300 400) 0 * 0.1
->       r = out 1 (sinOsc AR 900 0 * 0.1)
->   in out 0 (mrg2 l r + mrg2 l r)
diff --git a/Help/UGen/mul.help.lhs b/Help/UGen/mul.help.lhs
deleted file mode 100644
--- a/Help/UGen/mul.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Operator.*"
-    :t (*)
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = sinOsc AR 440 0 * 0.15
-
-Creates a beating effect (subaudio rate).
-
-> g_02 = fSinOsc KR 10 0 * pinkNoise 'α' AR * 0.5
-
-Ring modulation.
-
-> g_03 =
->     let p = sinOsc AR (xLine KR 100 1001 10 DoNothing) 0
->         q = syncSaw AR 100 200
->     in p * q * 0.25
-
-Optimises identity
-
-> g_04 = sinOsc AR 440 0 * 1 / 10
-
-> g_05 = 1 * sinOsc AR 440 0 / 10
diff --git a/Help/UGen/mulAdd.help.lhs b/Help/UGen/mulAdd.help.lhs
deleted file mode 100644
--- a/Help/UGen/mulAdd.help.lhs
+++ /dev/null
@@ -1,33 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = mulAdd (sinOsc AR 440 0) 0.1 0.05
-
-These should both optimise to the same graph...
-
-> g_02 = sinOsc AR 440 0 * 0.1 + 0.05
-
-> g_03 = 0.05 + sinOsc AR 440 0 * 0.1
-
-    > putStrLn $ unlines (map synthstat [g_01,g_02,g_03])
-
-The order of the multiplier inputs is significant regards multi-rate inputs?
-sclang re-orders these if required.
-g_04 CRASHES scsynth.
-
-> g_04 = mulAdd 0.1 (sinOsc AR 440 0) 0.05
-
-    {MulAdd(0.1,SinOsc.ar(440,0),0.05)}.draw
-
-> g_05 = 0.05 + 0.1 * sinOsc AR 440 0
-
-    {0.05 + (0.1 * SinOsc.ar(440,0))}.draw
-
-NOTE: mulAdd with I-RATE at input 0 and K-RATE thereafter CRASHES
-
-> g_06 = sinOsc AR (mulAdd (control IR "x" 110) (control KR "y" 2) (control IR "z" 110)) 0 * 0.1
-
-all AR inputs optimise ordinarily
-
-> g_07 = (sinOsc AR 440 0 * sinOsc AR 441 0 + sinOsc AR 442 0) * 0.1
-
-> g_08 = (sinOsc AR 440 0 + sinOsc AR 441 0 * sinOsc AR 442 0) * 0.1
diff --git a/Help/UGen/nRand.help.lhs b/Help/UGen/nRand.help.lhs
deleted file mode 100644
--- a/Help/UGen/nRand.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let n = nRand 'α' 1200.0 4000.0 (mce [2,5])
->       e = line KR 0.2 0 0.1 RemoveSynth
->   in fSinOsc AR n 0 * e
diff --git a/Help/UGen/nestedAllpassC.help.lhs b/Help/UGen/nestedAllpassC.help.lhs
deleted file mode 100644
--- a/Help/UGen/nestedAllpassC.help.lhs
+++ /dev/null
@@ -1,61 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> nestedAllpassL_def s =
->   let d1 = 0.036
->       d2 = 0.030
->   in X.nestedAllpassL s d1 d1 0.08 d2 d2 0.3
-
-> doubleNestedAllpassL_def s =
->   let d1 = 0.0047
->       d2 = 0.022
->       d3 = 0.0084
->   in X.doubleNestedAllpassL s d1 d1 0.15 d2 d2 0.25 d3 d3 0.3
-
-> f_01 nc s =
->   let fb = localIn nc AR 0
->       lp0 = lpf s 6000
->       lp1 = delayL lp0 0.024 0.024
->       ap1 = doubleNestedAllpassL_def (lp1 + (0.5 * fb))
->       ap2 = nestedAllpassL_def ap1
->       revout = ap1 * 0.5 + ap2 * 0.6
->       locout = localOut (bpf (revout * 0.5) 1600 0.5)
->   in mrg2 revout locout
-
-> f_02 nc s =
->   let fb = localIn nc AR 0
->       lp = lpf s 6000
->       ap1 = X.doubleNestedAllpassL (lp + (0.5 * fb)) 0.0047 0.0047 0.25 0.0083 0.0083 0.35 0.022 0.022 0.45
->       ap2 = delayL (X.nestedAllpassL (delayL ap1 0.05 0.05) 0.03 0.03 0.25952 0.03 0.03 0.3) 0.067 0.067
->       ap3 = X.nestedAllpassL (lp + (delayL ap2 0.015 0.015 * 0.4)) 0.0292 0.0292 0.25 0.0098 0.0098 0.35
->       revout = sum_opt [ap1,ap2,ap3] * 0.5
->       locout = localOut (bpf (revout * 0.4) 1000 0.5)
->   in mrg2 revout locout
-
-> f_03 nc s =
->   let fb = localIn nc AR 0
->       lp = lpf s 4000
->       ap1 = allpassL (lp + (0.5 * fb)) 0.008 0.008 0.0459
->       ap2 = delayL (allpassL ap1 0.012 0.012 0.06885) 0.004 0.004
->       ap3 = delayL (X.nestedAllpassL (delayL ap2 0.017 0.017) 0.025 0.025 0.5 0.062 0.062 0.25) 0.031 0.031
->       ap4 = X.doubleNestedAllpassL (delayL ap3 0.003 0.003) 0.120 0.120 0.5 0.076 0.076 0.25 0.030 0.030 0.25
->       revout = sum_opt [ap4 * 0.8,ap3 * 0.8,ap2 * 1.5]
->       locout = localOut (bpf (revout * 0.4) 1000 0.5)
->   in mrg2 revout locout
-
-> g_00 = soundIn 0
-
-> g_01 =
->   let sig = soundIn 0
->       rev = f_01 2 sig
->   in 0.5 * rev + sig
-
-> g_02 =
->   let sig = soundIn 0
->       rev = f_02 2 sig
->   in 0.5 * rev + sig
-
-> g_03 =
->   let sig = soundIn 0
->       rev = f_03 2 sig
->   in 0.5 * rev + sig
diff --git a/Help/UGen/nhHall.help.lhs b/Help/UGen/nhHall.help.lhs
deleted file mode 100644
--- a/Help/UGen/nhHall.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let in1 = soundIn 0
->       in2 = soundIn 1
->       rt60 = mouseX KR 0.1 10.0 Linear 0.1
->   in X.nhHall in1 in2 rt60 0.5 200 0.5 4000 0.5 0.5 0.5 0.2 0.3
diff --git a/Help/UGen/nodeId.help.lhs b/Help/UGen/nodeId.help.lhs
deleted file mode 100644
--- a/Help/UGen/nodeId.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-NodeId, except that negative nodeId are not reported.
-
-> g_01 = sinOsc AR (mce2 (-100) (nodeID IR * 100)) 0 * 0.1
-
-    audition_at (-1,AddToHead,1,[]) g_01
-    audition_at (8,AddToHead,1,[]) g_01
diff --git a/Help/UGen/normalizer.help.lhs b/Help/UGen/normalizer.help.lhs
deleted file mode 100644
--- a/Help/UGen/normalizer.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "Normalizer"
-> Sound.SC3.UGen.DB.ugenSummary "Normalizer"
-
-> import Sound.SC3
-
-> let {s = fSinOsc AR 500 0
->     ;t = impulse AR 8 (lfSaw KR 0.25 (-0.6) * 0.7)
->     ;z = decay2 t 0.001 0.3 * s}
-> in audition (out 0 (mce [z, normalizer z 0.4 0.01]))
diff --git a/Help/UGen/numBuffers.help.lhs b/Help/UGen/numBuffers.help.lhs
deleted file mode 100644
--- a/Help/UGen/numBuffers.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-the number of audio buffers available at the server (by default 1024)
-
-> g_01 = poll (impulse KR 1 0) numBuffers 0 (label "numBuffers")
-
-> g_02 = let f = 110 + numBuffers in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/numRunningSynths.help.lhs b/Help/UGen/numRunningSynths.help.lhs
deleted file mode 100644
--- a/Help/UGen/numRunningSynths.help.lhs
+++ /dev/null
@@ -1,5 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-each concurrent audition increases oscillator frequency
-
-> g_01 = sinOsc AR (numRunningSynths * 200 + 400) 0 * 0.1
diff --git a/Help/UGen/offsetOut.help.lhs b/Help/UGen/offsetOut.help.lhs
deleted file mode 100644
--- a/Help/UGen/offsetOut.help.lhs
+++ /dev/null
@@ -1,66 +0,0 @@
-> import Sound.OSC {- hosc -}
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let a = offsetOut 0 (impulse AR 5 0)
->         b = out 0 (sinOsc AR 60 0 * 0.1)
->     in mrg [a,b]
-
-> g_02 =
->     let a = out 0 (impulse AR 5 0)
->         b = out 0 (sinOsc AR 60 0 * 0.1)
->     in mrg [a,b]
-
-Phase cancellation, the `offsetOut` at bus 0 should cancel, the `out` at
-bus 1 doesn't (or at least is exceedingly unlikely to).
-
-> sy_01 sr =
->     let f = sr / 100
->         o = sinOsc AR (constant f) 0 * 0.2
->     in synthdef "sy_01" (mrg [offsetOut 0 o,out 1 o])
-
-> bnd_01 sr t =
->     let latency = 0.2
->         c = 100 / sr {- recip f -}
->         m = s_new "sy_01" (-1) AddToHead 1 []
->         p = bundle (t + latency) [m]
->         q = bundle (t + latency + c/2) [m]
->     in [p,q]
-
-> proc_01 :: Transport m => m ()
-> proc_01 = do
->   sr <- serverSampleRateActual
->   _ <- async (d_recv (sy_01 sr))
->   t <- time
->   mapM_ sendBundle (bnd_01 sr t)
-
-    > withSC3 proc_01
-
-The cancellation isn't completely reliable though.  In supercollider language it seems
-to be better, though these _should_ be equivalent...
-
-    Routine(
-    {var sr = s.actualSampleRate
-    ;var f = sr / 100
-    ;var c = 1 / f
-    ;var g = {var o = SinOsc.ar(f,0) * 0.2; OffsetOut.ar(0,o); Out.ar(1,o)}
-    ;var sy = SynthDef("g",g)
-    ;var m = ["/s_new", "g", -1, 0, 1]
-    ;var latency = 0.2
-    ;sy.send(s)
-    ;s.sync
-    ;s.sendBundle(latency,m)
-    ;s.sendBundle(latency + (c/2),m)}).play
-
-To see/hear scheduler clock and sample clock drift:
-
-    Routine(
-    {var g = {OffsetOut.ar(0,Saw.ar(400) * EnvGen.kr(Env.perc, doneAction: 2) * 0.2)}
-    ;var h = {OffsetOut.ar(1,Saw.ar(800) * Decay2.ar(Impulse.ar(1)) * 0.2)}
-    ;var t_delay = 0.25
-    ;SynthDef("g",g).send(s)
-    ;SynthDef("h",h).send(s)
-    ;s.sync
-    ;s.sendBundle(t_delay,["/s_new", "h", -1, 0, 1])
-    ;inf.do({s.sendBundle(t_delay,["/s_new", "g", -1, 0, 1]); 1.0.wait})}).play
-
diff --git a/Help/UGen/onePole.help.lhs b/Help/UGen/onePole.help.lhs
deleted file mode 100644
--- a/Help/UGen/onePole.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "OnePole"
-> Sound.SC3.UGen.DB.ugenSummary "OnePole"
-
-> import Sound.SC3
-
-> let n = whiteNoise 'α' AR
-> in audition (out 0 (onePole (n * 0.5) 0.95))
-
-> let n = whiteNoise 'α' AR
-> in audition (out 0 (onePole (n * 0.5) (-0.95)))
-
-> let {n = whiteNoise 'α' AR
->     ;c = line KR (-0.99) 0.99 10 RemoveSynth}
-> in audition (out 0 (onePole (n * 0.5) c))
diff --git a/Help/UGen/oneZero.help.lhs b/Help/UGen/oneZero.help.lhs
deleted file mode 100644
--- a/Help/UGen/oneZero.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "OneZero"
-> Sound.SC3.UGen.DB.ugenSummary "OneZero"
-
-> import Sound.SC3
-
-> let n = whiteNoise 'α' AR
-> in audition (out 0 (oneZero (n * 0.5) 0.5))
-
-> let n = whiteNoise 'α' AR
-> in audition (out 0 (oneZero (n * 0.5) (-0.5)))
-
-> let {n = whiteNoise 'α' AR
->     ;c = line KR (-0.5) 0.5 10 RemoveSynth}
-> in audition (out 0 (oneZero (n * 0.5) c))
diff --git a/Help/UGen/onsets.help.lhs b/Help/UGen/onsets.help.lhs
deleted file mode 100644
--- a/Help/UGen/onsets.help.lhs
+++ /dev/null
@@ -1,40 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-    > withSC3 (async (b_alloc 10 512 1))
-
-> f_01 t = t2a t 0
-
-> f_02 t =
->     let s = sinOsc AR 440 0 * 0.2
->         e = envGen KR t 1 0 1 DoNothing (envPerc 0.001 0.1)
->     in s * e
-
-> f_03 f =
->     let x = mouseX KR 0 1 Linear 0.2
->         i = mix (soundIn (mce2 0 1))
->         c = fft' 10 i
->         o = onsets' c x (onsetType "rcomplex")
->     in f o
-
-> g_01 = f_03 f_01
-
-> g_02 = mce2 (dc AR 0) (mix (soundIn (mce2 0 1) * 0.75))
-
-a generative signal with distinct onsets!
-
-> g_03 =
->     let e = linLin (saw AR 2) (-1) 1 0 1
->         p = let f = midiCPS (tiRand 'α' 63 75 (impulse KR 2 0))
->             in pulse AR f 0.5
->         f = linExp (lfNoise2 'β' KR 0.5) (-1) 1 100 10000
->     in lpf p f * e
-
-x varies threshold, whitenoise bursts indicate detected onsets
-
-> g_04 =
->     let c = fft' 10 g_03
->         x = mouseX KR 0 1 Linear 0.2
->         o = onsets' c x (onsetType "rcomplex")
->         p = let d = envPerc 0.001 0.1
->             in whiteNoise 'α' AR * envGen KR o 0.2 0 1 DoNothing d
->     in pan2 g_03 (-0.75) 0.2 + pan2 p 0.75 1
diff --git a/Help/UGen/osc.help.lhs b/Help/UGen/osc.help.lhs
deleted file mode 100644
--- a/Help/UGen/osc.help.lhs
+++ /dev/null
@@ -1,46 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Allocate and generate wavetable buffer
-
-> m_01 =
->   [b_alloc 10 512 1
->   ,b_gen_sine1 10 [Normalise,Wavetable,Clear] [1,1/2,1/3,1/4,1/5]]
-
-    > withSC3 (mapM_ maybe_async m_01)
-
-Fixed frequency wavetable oscillator
-
-> g_01 = osc AR 10 220 0 * 0.1
-
-Modulate frequency
-
-> g_02 =
->     let f = xLine KR 2000 200 1 DoNothing
->     in osc AR 10 f 0 * 0.1
-
-As frequency modulator
-
-> g_03 =
->     let f = osc AR 10 (xLine KR 1 1000 9 RemoveSynth) 0 * 200 + 800
->     in osc AR 10 f 0 * 0.1
-
-As phase modulator
-
-> g_04 =
->     let p = osc AR 10 (xLine KR 20 8000 10 RemoveSynth) 0 * 2 * pi
->     in osc AR 10 800 p * 0.1
-
-Fixed frequency wavetable oscillator
-
-> g_05 = osc AR 10 220 0 * 0.1
-
-Change the wavetable while its playing
-
-    > withSC3 (maybe_async (b_gen_sine1 10 [Normalise,Wavetable,Clear] [1,0.6,1/4]))
-
-Send directly calculated wavetable
-
-    > import Sound.SC3.Common.Buffer {- hsc3 -}
-    > import Sound.SC3.Common.Math.Window {- hsc3 -}
-    > let t = to_wavetable (triangular_table 512)
-    > withSC3 (maybe_async (b_setn1 10 0 t))
diff --git a/Help/UGen/osc1.help.lhs b/Help/UGen/osc1.help.lhs
deleted file mode 100644
--- a/Help/UGen/osc1.help.lhs
+++ /dev/null
@@ -1,18 +0,0 @@
-> import Sound.OSC {- hosc -}
-> import Sound.SC3 {- hsc3 -}
-
-> f_01 (b,l) = do
->  let z = [Normalise,Wavetable,Clear]
->  _ <- async (b_alloc b 512 1)
->  sendMessage (b_gen_sine1 b z (map recip l))
-
-> t_01 :: Transport m => m ()
-> t_01 = do
->   let a = [[13,8,55,34,5,21,3,1,2],[55,34,1,3,2,13,5,8,21]]
->   mapM_ f_01 (zip [10,11] a)
-
-    withSC3 t_01
-
-> g_01 = lfSaw AR (mce2 110 164) 0 * 0.1 * osc1 AR (mce2 10 11) 4 RemoveSynth
-
-    audition g_01
diff --git a/Help/UGen/oscN.help.lhs b/Help/UGen/oscN.help.lhs
deleted file mode 100644
--- a/Help/UGen/oscN.help.lhs
+++ /dev/null
@@ -1,4 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "OscN"
-> Sound.SC3.UGen.DB.ugenSummary "OscN"
-
-See osc
diff --git a/Help/UGen/oteyPianoStrings.help.lhs b/Help/UGen/oteyPianoStrings.help.lhs
deleted file mode 100644
--- a/Help/UGen/oteyPianoStrings.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let k = control KR
->       freq = k "freq" 440
->       gate_ = k "gate" 1
->       amp = k "amp" 0.5
->       rho = k "rho" 1
->       env = envGen AR gate_ 1 0 1 RemoveSynth (envASR 0 1 0.1 EnvLin)
->       loc = linLin freq (midiCPS 36) (midiCPS 90) (-0.75) 0.75
->       s = X.oteyPianoStrings AR freq amp 0 0.35 2 4 8 1 7e-2 1.4 (-4) 4 rho 1 1 0 1 0.2 1 1 0.142 1 3e-4 1
->   in X.oteySoundBoard AR (pan2 (s * env) loc 0.1) 20 20 0.8
diff --git a/Help/UGen/oteySoundBoard.help.lhs b/Help/UGen/oteySoundBoard.help.lhs
deleted file mode 100644
--- a/Help/UGen/oteySoundBoard.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let loc = mouseX KR (-1) 1 Linear 0.2
->   in X.oteySoundBoard AR (pan2 (soundIn 0) loc 0.1) 20 20 0.8
-
-> g_02 =
->   let d = dust 'α' AR 1
->       n = whiteNoise 'β' AR
->       i = decay (d * 0.5) 0.2 * n
->       loc = mouseX KR (-1) 1 Linear 0.2
->   in X.oteySoundBoard AR (pan2 i loc 0.1) 20 20 0.8
diff --git a/Help/UGen/out.help.lhs b/Help/UGen/out.help.lhs
deleted file mode 100644
--- a/Help/UGen/out.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Oscillators at outputs zero (330) and one (331)
-
-> g_01 = out 0 (sinOsc AR (mce2 330 331) 0 * 0.1)
-
-`out` is summing, as opposed to `replaceOut`
-
-> g_02 = mrg [out 0 (sinOsc AR (mce2 330 990) 0 * 0.1)
->            ,out 0 (sinOsc AR (mce2 331 991) 0 * 0.1)]
diff --git a/Help/UGen/packFFT.help.lhs b/Help/UGen/packFFT.help.lhs
deleted file mode 100644
--- a/Help/UGen/packFFT.help.lhs
+++ /dev/null
@@ -1,19 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let b = localBuf 'α' 512 1
->       n = 100
->       square a = a * a
->       r1 z = range 0 1 (fSinOsc KR (expRand (z,'β') 0.1 1) 0)
->       m1 = map r1 (id_seq n 'γ')
->       m2 = zipWith (*) m1 (map square [1.0, 0.99 ..])
->       r2 z = lfPulse KR (2 ** iRand (z,'δ') (-3) 5) 0 0.3
->       i = map r2 (id_seq n 'ε')
->       m3 = zipWith (*) m2 i
->       p = replicate n 0.0
->       c1 = fft' b (fSinOsc AR 440 0)
->       c2 = packFFT c1 512 0 (constant n - 1) 1 (packFFTSpec m3 p)
->       s = ifft' c2
->   in mce2 s s
-
-    > putStrLn $ synthstat_concise g_01
diff --git a/Help/UGen/pan2.help.lhs b/Help/UGen/pan2.help.lhs
deleted file mode 100644
--- a/Help/UGen/pan2.help.lhs
+++ /dev/null
@@ -1,11 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = pinkNoise 'α' AR
->     in pan2 n (fSinOsc KR 2 0) 0.3
-
-> g_02 =
->     let n = pinkNoise 'α' AR
->         x = mouseX KR (-1) 1 Linear 0.2
->         y = mouseY KR 0 1 Linear 0.2
->     in pan2 n x y
diff --git a/Help/UGen/panAz.help.lhs b/Help/UGen/panAz.help.lhs
deleted file mode 100644
--- a/Help/UGen/panAz.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let o = pinkNoise 'α' AR
->         nc = 4
->         fr = 0.15
->     in panAz nc o (lfSaw KR fr 0) 0.1 2 0.5
diff --git a/Help/UGen/partConv.help.lhs b/Help/UGen/partConv.help.lhs
--- a/Help/UGen/partConv.help.lhs
+++ b/Help/UGen/partConv.help.lhs
@@ -4,7 +4,7 @@
 > f_01 :: Transport m => m UGen
 > f_01 = do
 >   let target_b = 12 {- source signal -}
->       target_file = "/home/rohan/data/audio/pf-c5.snd"
+>       target_file = "/home/rohan/data/audio/pf-c5.aif"
 >   _ <- async (b_allocRead target_b target_file 0 0)
 >   return (playBuf 1 AR (constant target_b) 1 0 0 Loop DoNothing)
 
@@ -13,12 +13,12 @@
 >   let fft_size = 2048
 >       ir_file = "/home/rohan/data/audio/reverbs/chapel.wav"
 >       ir_length = 62494 {- frame count of ir_file -}
->       accum_size = pc_calcAccumSize fft_size ir_length
+>       accum_size = partConv_calcAccumSize fft_size ir_length
 >       ir_td_b = 10 {- time domain -}
 >       ir_fd_b = 11 {- frequency domain -}
 >   _ <- async (b_allocRead ir_td_b ir_file 0 ir_length)
 >   _ <- async (b_alloc ir_fd_b accum_size 1)
->   sendMessage (pc_preparePartConv ir_fd_b ir_td_b fft_size)
+>   sendMessage (partConv_preparePartConv ir_fd_b ir_td_b fft_size)
 >   return (partConv s (constant fft_size) (constant ir_fd_b))
 
     g_01 <- withSC3 f_01
diff --git a/Help/UGen/pause.help.lhs b/Help/UGen/pause.help.lhs
deleted file mode 100644
--- a/Help/UGen/pause.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let f = control KR "f" 440
->         g = control KR "g" 1
->     in mrg [sinOsc AR f 0 * 0.1,pause g 1001]
-
-    > audition_at (1001,AddToTail,1,[]) g_01
-    > audition_at (1002,AddToTail,1,[("f",880)]) g_01
-
-Request that node 1002 pause node 1001.
-
-    > withSC3 (send (n_set 1002 [("g",0)]))
-
-Restart node 1001.
-
-    > withSC3 (send (n_set 1002 [("g",1)]))
diff --git a/Help/UGen/pauseSelf.help.lhs b/Help/UGen/pauseSelf.help.lhs
deleted file mode 100644
--- a/Help/UGen/pauseSelf.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let x = mouseX KR (-1) 1 Linear 0.1
->         o = sinOsc AR 440 0 * 0.1
->     in mrg [o,pauseSelf x]
-
-Run paused node (assuming no intermediate node is created).
-
-    > withSC3 (send (n_run [(-1, True)]))
diff --git a/Help/UGen/pauseSelfWhenDone.help.lhs b/Help/UGen/pauseSelfWhenDone.help.lhs
deleted file mode 100644
--- a/Help/UGen/pauseSelfWhenDone.help.lhs
+++ /dev/null
@@ -1,22 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-using PauseSynth done action
-
-> g_01 =
->     let x = mouseX KR (-1) 1 Linear 0.1
->         e = linen x 1 0.1 1 PauseSynth
->     in sinOsc AR 440 0 * e
-
-Run paused node (assuming no intermediate node is created).
-
-    > withSC3 (Sound.OSC.sendMessage (n_run [(-1, True)]))
-
-using pauseSelfWhenDone UGen
-
-> g_02 =
->     let x = mouseX KR (-1) 1 Linear 0.1
->         e = linen x 1 0.1 1 DoNothing
->         o = sinOsc AR 440 0 * e
->     in mrg [o,pauseSelfWhenDone e]
-
-    > withSC3 (Sound.OSC.sendMessage (n_run [(-1, True)]))
diff --git a/Help/UGen/peak.help.lhs b/Help/UGen/peak.help.lhs
deleted file mode 100644
--- a/Help/UGen/peak.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let t = dust 'α' AR 20
->         r = impulse AR 0.4 0
->         f = peak t r * 500 + 200
->     in sinOsc AR f 0 * 0.2
diff --git a/Help/UGen/perlin3.help.lhs b/Help/UGen/perlin3.help.lhs
deleted file mode 100644
--- a/Help/UGen/perlin3.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->     let x = integrator (k2a (mouseX KR 0 0.1 Linear 0.2)) 1.0
->         y = integrator (k2a (mouseY KR 0 0.1 Linear 0.2)) 1.0
->     in X.perlin3 AR x y 0
diff --git a/Help/UGen/phasor.help.lhs b/Help/UGen/phasor.help.lhs
deleted file mode 100644
--- a/Help/UGen/phasor.help.lhs
+++ /dev/null
@@ -1,78 +0,0 @@
-> import Sound.SC3
-
-phasor controls sine frequency, end frequency matches second sine.
-
-> g_00 =
->     let rate = mouseX KR 0.2 2 Exponential 0.1
->         tr = impulse AR rate 0
->         sr = sampleRate
->         x = phasor AR tr (rate / sr) 0 1 0
->         f = mce [linLin x 0 1 600 1000, 1000]
->     in sinOsc AR f 0 * 0.2
-
-two phasors control two sine frequencies: mouse y controls resetPos of the second
-
-> g_01 =
->     let rate = mouseX KR 1 200 Linear 0.1
->         tr = impulse AR rate 0
->         sr = sampleRate
->         x = phasor AR tr (rate / sr) 0 1 (mce2 0 (mouseY KR 0 1 Linear 0.2))
->     in sinOsc AR (x * 500 + 500) 0 * 0.2
-
-Load sound file to buffer zero
-
-    > let fn = "/home/rohan/data/audio/pf-c5.aif"
-    > withSC3 (async (b_allocRead 0 fn 0 0))
-
-Phasor as phase input to bufRd
-
-> g_02 =
->      let ph = phasor AR 0 (bufRateScale KR 0) 0 (bufFrames KR 0) 0
->      in bufRdN 1 AR 0 ph Loop
-
-Allocate and generate (non-wavetable) buffer at index one
-(see osc for wavetable oscillator)
-
-    > withSC3 (mapM_ maybe_async [b_alloc 1 256 1,b_gen_sine1 1 [Normalise,Clear] [1]])
-
-Audio rate phasor oscillator as phase input to bufRd
-
-> g_03 =
->     let b = 1
->         f = 440
->         fr = bufFrames KR b
->         rt = f * (fr / sampleRate)
->         ph = phasor AR b (rt * bufRateScale KR b) 0 fr 0
->     in bufRdL 1 AR b ph Loop * 0.1
-
-Phasor as impulse with reset
-
-> g_04 =
->     let impulse_reset freq reset =
->             let ph = phasor AR reset (freq / sampleRate) 0 1 0
->             in hpz1 ph <** 0
->         x = mouseX KR 0 1 Linear 0.2 >** 0.5
->         ck = impulse AR 3 0
->         im = impulse_reset 3 x
->         x' = sinOsc AR 440 0 * x * 0.05
->         im' = sinOsc AR 220 0 * decay2 (ck + im) 0.01 0.5 * 0.1
->     in mce2 x' im'
-
-If one wants Phasor to output a signal with frequency freq oscilating
-between start and end, then the rate should be (end - start) * freq /
-sr where sr is the sampling rate.  F32 precision is an issue.
-
-> g_05 =
->     let f = mouseX KR 220 880 Exponential 0.1
->         tr = impulse AR f 0
->         sr = sampleRate
->         x = phasor AR tr (two_pi * f / sr) 0 two_pi 0
->     in sin x * 0.1
-
-phasor as lfSaw, but with precision issues
-
-> g_06 = phasor AR (impulse AR 440 0) (2 * 440 / sampleRate) (-1) 1 0 * 0.2
-
-> g_07 =
->   let ph = phasor AR (impulse AR 440 0) (two_pi * 440 / sampleRate) 0 two_pi 0
->   in sin ph * 0.2
diff --git a/Help/UGen/pinkNoise.help.lhs b/Help/UGen/pinkNoise.help.lhs
deleted file mode 100644
--- a/Help/UGen/pinkNoise.help.lhs
+++ /dev/null
@@ -1,34 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-    audition . (out 0) . (* 0.05) =<< pinkNoiseM AR
-    audition . (out 0) . (* 0.05) =<< whiteNoiseM AR
-    audition . (out 0) . (* 0.05) =<< brownNoiseM AR
-
-speaker balance
-
-> g_01 = let n = pinkNoise 'γ' AR * 0.05 in mce2 n n
-
-> g_02 =
->     let x = mouseX KR 0 1 Linear 0.2
->         x' = 1 - x
->         n = pinkNoise 'δ' AR * 0.05
->     in mce2 (n * x') (n * x)
-
-identifiers & referential transparency
-
-> g_03 = (pinkNoise 'α' AR - pinkNoise 'α' AR) * 0.2
-
-> g_04 = (pinkNoise 'α' AR - pinkNoise 'β' AR) * 0.2
-
-> g_05 = let n = pinkNoise 'α' AR in n - n * 0.2
-
-Drawing
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plot_ugen1 0.1 (pinkNoise 'ε' AR)
-
-    import Sound.SC3.Plot.FFT {- hsc3-plot -}
-    plot_ugen_fft1 0.1 (pinkNoise 'ζ' AR)
-
-![](sw/hsc3/Help/SVG/pinkNoise.0.svg)
-![](sw/hsc3/Help/SVG/pinkNoise.1.svg)
diff --git a/Help/UGen/pitch.help.lhs b/Help/UGen/pitch.help.lhs
deleted file mode 100644
--- a/Help/UGen/pitch.help.lhs
+++ /dev/null
@@ -1,34 +0,0 @@
- 
- 
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let x = mouseX KR 220 660 Linear 0.1
->         y = mouseY KR 0.05 0.25 Linear 0.1
->         s = sinOsc AR x 0 * y
->         a = amplitude KR s 0.05 0.05
->         f = pitch s 440 60 4000 100 16 7 0.02 0.5 1 0
->     in mce [s, sinOsc AR (mceChannel 0 f / 2) 0 * a]
-
-Live input tracking, carelessly
-
-> g_02 =
->     let s = hpf (soundIn 0) 90
->         a = lag (amplitude KR s 0.01 0.01) 0.2
->         [f,_] = mceChannels (pitch s 440 60 4000 100 16 1 0.02 0.5 1 0)
->         fq = midiCPS (roundE (lag (cpsMIDI f) 0.1))
->     in mce [s * 0.1, lfTri AR f 0 * lag a 0.2 * lag (f >** 90 * f <** 500) 0.2]
-
-Comparison of input frequency (x) and tracked oscillator frequency (f).
-Output is printed to the console by scsynth.
-
-> g_03 =
->     let x = mouseX KR 440 880 Exponential 0.1
->         o = sinOsc AR x 0 * 0.1
->         [f,_] = mceChannels (pitch o 440 60 4000 100 16 7 0.02 0.5 1 0)
->         r = sinOsc AR f 0 * 0.1
->         t = impulse KR 4 0
->         pf = poll t f 0 (label "f")
->         px = poll t x 0 (label "x")
->     in mce [out 0 (mce2 o r),pf,px]
diff --git a/Help/UGen/pitchShift.help.lhs b/Help/UGen/pitchShift.help.lhs
deleted file mode 100644
--- a/Help/UGen/pitchShift.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> gr_01 =
->     let s = sinOsc AR 440 0 * 0.1
->         r = mouseX KR 0.5 2.0 Linear 0.1
->         d = mouseY KR 0.0 0.1 Linear 0.1
->     in pitchShift s 0.2 r d 0
-
-> gr_02 =
->     let s = soundIn 0
->         pd = mouseX KR 0.0 0.1 Linear 0.1
->         td = mouseY KR 0.0 0.1 Linear 0.1
->     in pitchShift s 0.2 (mce2 1.0 1.5) pd td
diff --git a/Help/UGen/playBuf.help.lhs b/Help/UGen/playBuf.help.lhs
deleted file mode 100644
--- a/Help/UGen/playBuf.help.lhs
+++ /dev/null
@@ -1,91 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Load sound file to buffer zero (single channel file required for examples)
-
-> fn_01 = "/home/rohan/data/audio/pf-c5.aif"
-
-> m_01 = (b_allocRead 0 fn_01 0 0)
-
-    withSC3 (async m_01)
-
-Play once only.
-
-> f_01 b = playBuf 1 AR b (bufRateScale KR b) 1 0 NoLoop RemoveSynth
-
-> g_01 = f_01 28 -- 0 28
-
-Play in infinite loop.
-
-> g_02 = playBuf 1 AR 0 (bufRateScale KR 0) 1 0 Loop DoNothing
-
-Trigger playback at each pulse.
-
-> g_03 =
->     let t = impulse KR 2 0
->         s = bufRateScale KR 0
->     in playBuf 1 AR 0 s t 0 NoLoop DoNothing
-
-Trigger playback at each pulse (diminishing intervals).
-
-> g_04 =
->     let f = xLine KR 0.1 100 10 RemoveSynth
->         t = impulse KR f 0
->         s = bufRateScale KR 0
->     in playBuf 1 AR 0 s t 0 NoLoop DoNothing
-
-Loop playback, accelerating pitch.
-
-> g_05 =
->     let r = xLine KR 0.1 100 60 RemoveSynth
->     in playBuf 1 AR 0 r 1 0 Loop DoNothing
-
-Sine wave control of playback rate, negative rate plays backwards.
-
-> g_06 =
->     let f = xLine KR 0.2 8 30 RemoveSynth
->         r = fSinOsc KR f 0 * 3 + 0.6
->         s = bufRateScale KR 0 * r
->     in playBuf 1 AR 0 s 1 0 Loop DoNothing
-
-Channel mismatch, single channel buffer, two channel playBuf, result
-is single channel playback and channel mismatch message in server log.
-
-> g_07 = playBuf 2 AR 0 (bufRateScale KR 0) 1 0 Loop DoNothing
-
-Graph will play both channels after loading a two channel signal to
-buffer.
-
-> f_02 = "/home/rohan/data/audio/sp/tinguely.aif"
-
-> m_02 = b_allocRead 0 f_02 0 0
-
-    withSC3 (async m_02)
-
-Release buffer.
-
-    withSC3 (send (b_free 0))
-
-Scan sequence of buffers:
-
-> f_08 n =
->     let t = impulse KR 2 0
->         b = mouseX KR 0 n Linear 0.2
->         r = bufRateScale KR b
->     in playBuf 1 AR b r t 0 Loop DoNothing
-
-> g_08 = f_08 52 -- (29 * 6)
-
-In sclanguage:
-
-{var fn = "/home/rohan/data/audio/pf-c5.aif"
-;s.sendMsg("/b_allocRead",0,fn,0,0)}.value
-
-{var sc = BufRateScale.kr(0)
-;Out.ar(0,PlayBuf.ar(2,0,sc,1,0,1,0))}.play
-
-{var fn = "/home/rohan/data/audio/sp/tinguely.aif"
-;s.sendMsg("/b_allocRead",0,fn,0,0)}.value
-
-{var b = MouseX.kr(32,64,0,0.2)
-;var r = BufRateScale.kr(b)
-;Out.ar(0,PlayBuf.ar(1,b,r,1,0,1,0))}.play
diff --git a/Help/UGen/playBufCF.help.lhs b/Help/UGen/playBufCF.help.lhs
deleted file mode 100644
--- a/Help/UGen/playBufCF.help.lhs
+++ /dev/null
@@ -1,31 +0,0 @@
-wslib: external/composite
-
-> import Sound.SC3 {- hsc3 -}
-
-Load sound file to buffer zero (single channel file required for examples)
-
-> fn_01 = "/home/rohan/data/audio/pf-c5.aif"
-> fn_02 = "/home/rohan/opt/src/supercollider/sounds/a11wlk01.wav"
-
-    > withSC3 (async (b_allocRead 0 fn_02 0 0))
-
-control-rate trigger and start-position inputs
-
-> g_01 =
->     let b = 0
->         r = bufRateScale KR b
->         tr = impulse KR 2 0
->         wn = whiteNoise 'α' KR
->         sp = linLin wn (-1) 1 0 (bufFrames KR b - (0.5 * 44100))
->         o = playBufCF 1 b r tr sp NoLoop 0.1 2
->         o' = playBuf 1 AR b r tr sp NoLoop DoNothing
->     in mce2 o o'
-
-demand ugens inputs
-
-> g_02 =
->     let b = 0
->         r = drand 'α' dinf (mce [0.95,1,1.05])
->         tr = dwhite 'β' dinf 0.1 0.3
->         sp = dbrown 'γ' dinf 0 0.95 0.1 * bufFrames KR b
->     in playBufCF 1 b r tr sp NoLoop 2 5
diff --git a/Help/UGen/pluck.help.lhs b/Help/UGen/pluck.help.lhs
deleted file mode 100644
--- a/Help/UGen/pluck.help.lhs
+++ /dev/null
@@ -1,27 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Protect {- hsc3-rw -}
-
-Excitation signal is white noise, triggered twice a second with varying OnePole coef.
-
-> g_01 =
->     let n = whiteNoise 'α' AR
->         t = impulse KR 9 0
->         x = mouseX KR (-0.999) 0.999 Linear 0.1
->         y = mouseY KR 0.1 1 Linear 0.1
->         dl = 1 / 440
->     in pluck (n * 0.25) t dl (dl * y) 10 x
-
-> g_02 =
->     let n = 50
->         udup = uclone (const False) 'α'
->         f = udup n (rand 'β' 0.05 0.2)
->         p = udup n (rand 'γ' 0 1)
->         w = udup n (whiteNoise 'δ' AR)
->         fi = udup n (rand 'ε' 10 12)
->         coef = rand 'ζ' 0.01 0.2
->         l = udup n (rand 'η' (-1) 1)
->         x = mouseX KR 60 1000 Exponential 0.1
->         o = linLin (sinOsc KR f p) (-1) 1 x 3000
->         i = impulse KR fi 0
->         ks = pluck (w * 0.1) i 0.01 (1 / o) 2 coef
->     in leakDC (mix (pan2 ks l 1)) 0.995
diff --git a/Help/UGen/pmOsc.help.lhs b/Help/UGen/pmOsc.help.lhs
deleted file mode 100644
--- a/Help/UGen/pmOsc.help.lhs
+++ /dev/null
@@ -1,24 +0,0 @@
-    :t pmOsc
-
-pmOsc is a composite of sinOsc, ie. sinOsc r cf (sinOsc r mf mp * pm)
-
-> import Sound.SC3 {- hsc3 -}
-
-Random parameters, linear modulation index motion over n seconds
-
-> pmi n =
->     let cf = rand 'α' 0 2000
->         mf = rand 'β' 0 800
->         pme = rand 'γ' 0 12
->         l = rand 'δ' (-1) 1
->         pm = line KR 0 pme n DoNothing
->     in linPan2 (pmOsc AR cf mf pm 0) l 0.05
-
-> g_01 = pmi 2
-
-PM textures
-
-    > import qualified Sound.SC3.Lang.Control.OverlapTexture as L
-    > L.overlapTextureU (0,1,8,maxBound) (pmi 1)
-    > L.overlapTextureU (1,2,7,maxBound) (pmi 2)
-    > L.overlapTextureU (6,6,6,maxBound) (pmi 12)
diff --git a/Help/UGen/poll.help.lhs b/Help/UGen/poll.help.lhs
deleted file mode 100644
--- a/Help/UGen/poll.help.lhs
+++ /dev/null
@@ -1,42 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let t = impulse KR 10 0
->         l = line KR 0 1 1 RemoveSynth
->     in poll t l 0 (label "polling...")
-
-multichannel expansion (requires labels be equal length...)
-
-> g_02 =
->     let t = impulse KR (mce2 10 5) 0
->         l = line KR 0 (mce2 1 5) (mce2 1 2) DoNothing
->     in poll t l 0 (mce2 (label "t1") (label "t2"))
-
-poll will not poll once with a trigger of one, use impulse with frequency zero
-
-> g_03 =
->   let k = control KR "k" 0.3
->       x = negate (k * 1.1)
->       t = impulse KR 0 0 {- 1 -}
->   in mrg2 x (poll t x (-1) (label "x"))
-
-poll at trigger control
-
-> g_04 =
->   let t = tr_control "t" 0.3
->       f1 = lfNoise2 'α' AR 0.25 * 100 + 110
->       f2 = lfNoise2 'β' AR 0.25 * 200 + 220
->       s = gendy1 'γ' AR 1 1 1 1 f1 f2 0.5 0.5 12 0 * 0.1
->       p = poll t (mce2 f1 f2) (-1) (mce2 (label "f1") (label "f2"))
->   in mrg2 s p
-
-    import Sound.OSC {- hosc -}
-    withSC3 (sendMessage (n_set1 (-1) "t" 1))
-
-print oscillator frequency
-
-> g_05 =
->     let x = mouseX KR 200 260 Exponential 0.2
->         o = sinOsc AR x 0 * 0.25
->         t = impulse KR 2 0
->     in mrg2 o (poll t x 0 (label "polling..."))
diff --git a/Help/UGen/pow.help.lhs b/Help/UGen/pow.help.lhs
deleted file mode 100644
--- a/Help/UGen/pow.help.lhs
+++ /dev/null
@@ -1,21 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let a = fSinOsc AR 100 0 * 0.1
->     in mce2 a (a ** 10)
-
-see also <http://create.ucsb.edu/pipermail/sc-users/2006-December/029998.html>
-
-> g_02 =
->     let n0 = lfNoise2 'α' KR 8
->         n1 = lfNoise2 'β' KR 3
->         s = blip AR (n0 * 200 + 300) (n1 * 10 + 20)
->         x = mouseX KR 1000 (sampleRate * 0.5) Exponential 0.1
->         y = mouseY KR 1 24 Exponential 0.1
->         d = latch s (impulse AR x 0)
->         b = roundUp d (0.5 ** y)
->     in mce2 d b
-
-optimises identity
-
-> g_03 = (sinOsc AR 440 0 ** 1) * 0.1
diff --git a/Help/UGen/pulse.help.lhs b/Help/UGen/pulse.help.lhs
deleted file mode 100644
--- a/Help/UGen/pulse.help.lhs
+++ /dev/null
@@ -1,20 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Modulate frequency
-
-> g_01 =
->     let f = xLine KR 40 4000 6 RemoveSynth
->     in pulse AR f 0.1 * 0.1
-
-Modulate pulse width, 0.5 = square wave
-
-> g_02 =
->     let w = line KR 0.01 0.99 8 RemoveSynth
->     in pulse AR 200 w * 0.1
-
-Two band limited square waves through a resonant low pass filter
-
-> g_03 =
->     let p = pulse AR (mce2 100 250) 0.5 * 0.1
->         f = xLine KR 8000 400 5 DoNothing
->     in rlpf p f 0.05
diff --git a/Help/UGen/pulseCount.help.lhs b/Help/UGen/pulseCount.help.lhs
deleted file mode 100644
--- a/Help/UGen/pulseCount.help.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "PulseCount"
-> Sound.SC3.UGen.DB.ugenSummary "PulseCount"
-
-> import Sound.SC3 {- hsc3 -}
-
-> let c = pulseCount (impulse AR 10 0) (impulse AR 0.4 0)
-> in audition (out 0 (sinOsc AR (c * 200) 0 * 0.05))
-
-printer
-
-> let {b = localBuf 'α' 11 1
->     ;t = impulse AR 10 0
->     ;p = pulseCount t 0
->     ;d = demand t 0 (dbufwr 'α' (-666) b p NoLoop)}
-> in audition (mrg [out 0 (dc AR 0),poll t p (label "p") 0])
diff --git a/Help/UGen/pulseDPW.help.lhs b/Help/UGen/pulseDPW.help.lhs
deleted file mode 100644
--- a/Help/UGen/pulseDPW.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.Composite.External as X {- hsc3 -}
-
-> g_01 = X.pulseDPW AR (xLine KR 2000 20 10 DoNothing) 0.5 * 0.1
-
-> g_02 = X.pulseDPW AR (mouseX KR 200 12000 Exponential 0.2) 0.5 * 0.2
diff --git a/Help/UGen/pulseDivider.help.lhs b/Help/UGen/pulseDivider.help.lhs
deleted file mode 100644
--- a/Help/UGen/pulseDivider.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let p = impulse AR 8 0
->         d = pulseDivider p (mce [4,7]) 0
->         a = sinOsc AR 1200 0 * decay2 p 0.005 0.1
->         b = sinOsc AR  600 0 * decay2 d 0.005 0.5
->     in a + b * 0.4
diff --git a/Help/UGen/pv_BinDelay.help.lhs b/Help/UGen/pv_BinDelay.help.lhs
--- a/Help/UGen/pv_BinDelay.help.lhs
+++ b/Help/UGen/pv_BinDelay.help.lhs
@@ -4,6 +4,7 @@
 
 function to allocate buffers (fft,delay,feedback)
 non-local so that they can be set using b_set &etc.
+(& because pv_BinDelay fails with localBuf)
 
 > mk_buf sz = do
 >   _ <- async (b_alloc 10 (sz * 2) 1)
@@ -59,3 +60,21 @@
 > gr_03 =
 >     let o = range 0.75 0.95 (blip KR (1/25) 5)
 >     in recordBuf KR 12 0 1 0 1 Loop 1 DoNothing o
+
+{-
+
+pv_BinDelay - localBuf fails...
+
+let sz = 128
+    gen_sin l r n ph = -- function to generate sin table of n places in range (l,r)
+      let f x = range l r (sin ((x / n) * 2 * pi + ph))
+      in map f [0 .. n - 1]
+    b1 = asLocalBuf 'α' (gen_sin 0 0.35 sz 0) -- delay times
+    b2 = asLocalBuf 'β' (gen_sin 0.75 0.95 sz pi) -- feedback gain
+    z = soundIn 0
+    maxdel = 0.5
+    c1 = fft (localBuf 'γ' 1 (sz * 2)) z 0.25 0 1 0
+    c2 = X.pv_BinDelay c1 maxdel b1 b2 0.25
+in z + ifft c2 0 0
+
+-}
diff --git a/Help/UGen/pv_BinScramble.help.lhs b/Help/UGen/pv_BinScramble.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_BinScramble.help.lhs
+++ /dev/null
@@ -1,30 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_BinScramble"
-    Sound.SC3.UGen.DB.ugenSummary "PV_BinScramble"
-
-> import Sound.SC3 {- hsc3 -}
-
-> n_01 = "/home/rohan/data/audio/pf-c5.snd"
-
-> m_01 = b_allocRead 12 n_01 0 0
-
-     withSC3 (async m_01)
-
-> g_01 =
->   let a = playBuf 1 AR 12 (bufRateScale KR 12) 1 0 Loop DoNothing
->       f = fft' (localBuf 'α' 2048 1) a
->       x = mouseX KR 0.0 1.0 Linear 0.1
->       y = mouseY KR 0.0 1.0 Linear 0.1
->       g = pv_BinScramble 'β' f x y (impulse KR 4 0)
->   in pan2 (ifft' g) 0 0.5
-
-careful - feedback loop!
-
-> g_02 =
->   let a = soundIn 0
->       f = fft' (localBuf 'γ' 2048 1) a
->       x = mouseX KR 0.15 1 Linear 0.1
->       y = mouseY KR 0.15 1 Linear 0.1
->       i = impulse KR (lfNoise0 'δ' KR 2 * 8 + 10) 0
->       g = pv_BinScramble 'ε' f x y i
->       h = ifft' g
->   in pan2 h 0 1
diff --git a/Help/UGen/pv_BinShift.help.lhs b/Help/UGen/pv_BinShift.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_BinShift.help.lhs
+++ /dev/null
@@ -1,32 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_BinShift"
-    Sound.SC3.UGen.DB.ugenSummary "PV_BinShift"
-
-> import Sound.SC3 {- hsc3 -}
-
-source signal (oscillators)
-
-> g_01 =
->   let s0 = sinOsc KR 0.08 0 * 6 + 6.2
->       s1 = sinOsc KR (squared s0) 0 * 100 + 800
->   in sinOsc AR s1 0 * 0.2
-
-source signal (the world)
-
-> g_02 = soundIn 0
-
-default values
-
-> f_01 z = ifft' (pv_BinShift (ffta 'α' 2048 z 0.5 0 1 0) 1 0 0)
-
-> g_03 = f_01 g_02
-
-mouse control
-
-> f_02 z =
->   let x = mouseX KR (-10) 100 Linear 0.1
->       y = mouseY KR 1 4 Linear 0.1
->       b = mouseButton KR 0 1 0.2
->       pv = pv_BinShift (ffta 'β' 2048 z 0.5 0 1 0) y x b
->   in ifft' pv
-
-> g_04 = f_02 g_02
diff --git a/Help/UGen/pv_BinWipe.help.lhs b/Help/UGen/pv_BinWipe.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_BinWipe.help.lhs
+++ /dev/null
@@ -1,24 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_BinWipe"
-    Sound.SC3.UGen.DB.ugenSummary "PV_BinWipe"
-
-> import Sound.SC3 {- hsc3 -}
-
-> n_01 = "/home/rohan/data/audio/pf-c5.snd"
-
-    withSC3 (async (b_allocRead 12 n_01 0 0))
-
-> g_01 = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing
-
-> g_02 = soundIn 0
-
-> f_01 z =
->   let n = whiteNoise 'α' AR * 0.2
->       f = fft' (localBuf 'β' 2048 1) n
->       g = fft' (localBuf 'γ' 2048 1) z
->       x = mouseX KR 0.0 1.0 Linear 0.1
->       h = pv_BinWipe f g x
->   in pan2 (ifft' h) 0 0.5
-
-> g_03 = f_01 g_01
-
-> g_04 = f_01 g_02
diff --git a/Help/UGen/pv_BrickWall.help.lhs b/Help/UGen/pv_BrickWall.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_BrickWall.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_BrickWall"
-    Sound.SC3.UGen.DB.ugenSummary "PV_BrickWall"
-
-> import Sound.SC3 {- hsc3 -}
-
-> f_01 z =
->   let x = mouseX KR (-1) 1 Linear 0.1
->       c = fft' (localBuf 'α' 2048 1) z
->   in ifft' (pv_BrickWall c x)
-
-> g_01 = f_01 (whiteNoise 'α' AR * 0.2)
-
-> g_02 = f_01 (soundIn 0)
-
diff --git a/Help/UGen/pv_BufRd.help.lhs b/Help/UGen/pv_BufRd.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_BufRd.help.lhs
+++ /dev/null
@@ -1,40 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_BufRd"
-    Sound.SC3.UGen.DB.ugenSummary "PV_BufRd"
-
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}
-
-allocate analysis buffer and load soundfile
-
-> n_01 = "/home/rohan/opt/src/supercollider/sounds/a11wlk01.wav"
-
-> m_01 =
->   let f = 1024 {- frame size -}
->       h = 0.25 {- hop size -}
->       p_dur = 4.2832879818594 {- duration (in seconds) of n_01 -}
->       b_size = pv_calcPVRecSize p_dur f h 48000
->   in [b_alloc 0 b_size 1,b_allocRead 1 n_01 0 0]
-
-    withSC3 (mapM_ async m_01)
-
-do the analysis and store to buffer.  the window type and overlaps are
-important for resynthesis parameters
-
-> g_01 =
->   let rec_buf = 0
->       au_buf = 1
->       l_buf = localBuf 'α' 1024 1;
->       rt = bufRateScale KR au_buf
->       i = playBuf 1 AR au_buf rt 1 0 NoLoop RemoveSynth
->       c0 = fft l_buf i 0.25 1 1 0
->       c1 = pv_RecordBuf c0 rec_buf 0 1 0 0.25 1
->   in mrg2 (dc AR 0) c1
-
-play analysis back
-
-> g_02 =
->   let rec_buf = 0
->       l_buf = localBuf 'α' 1024 1
->       x = mouseX KR 0 1 Linear 0.2
->       c0 = pv_BufRd l_buf rec_buf x
->   in ifft c0 1 0
diff --git a/Help/UGen/pv_Compander.help.lhs b/Help/UGen/pv_Compander.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_Compander.help.lhs
+++ /dev/null
@@ -1,36 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}
-
-Example signal to process.
-
-> g_01 =
->     let e = decay2 (impulse AR 8 0 * lfSaw KR 0.3 0 * 0.3) 0.001 0.3
->         p = mix (pulse AR (mce [80, 81]) 0.3)
->     in e * p
-
-> g_02 = soundIn 0
-
-mostly compress
-
-> f_01 z =
->     let x = mouseX KR 1 50 Linear 0.2
->     in mce [z, ifft' (pv_Compander (fft' (localBuf 'α' 2048 1) z) x 1.2 0.25)]
-
-> g_03 = f_01 g_01
-
-moslt expand
-
-> f_02 z =
->     let x = mouseX KR 1 50 Linear 0.1
->     in mce [z, ifft' (pv_Compander (fft' (localBuf 'β' 2048 1) z) x 2.0 0.85)]
-
-> g_04 = f_02 g_01
-
-pv sustainer
-
-> f_03 z =
->   let x = mouseX KR 1 80 Linear 0.1
->       s = ifft' (pv_Compander (fft' (localBuf 'γ' 2048 1) z) x 0.5 1.0)
->   in mce [z, limiter s 0.999 0.05]
-
-> g_05 = f_03 g_01
diff --git a/Help/UGen/pv_ConformalMap.help.lhs b/Help/UGen/pv_ConformalMap.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_ConformalMap.help.lhs
+++ /dev/null
@@ -1,30 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_ConformalMap"
-    Sound.SC3.UGen.DB.ugenSummary "PV_ConformalMap"
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let i = soundIn 0
->       x = mouseX KR (-1) 1 Linear 0.1
->       y = mouseY KR (-1) 1 Linear 0.1
->   in pan2 (ifft' (pv_ConformalMap (fft' (localBuf 'α' 1024 1) i) x y)) 0 1
-
-With filtering.
-
-> f_01 z =
->   let x = mouseX KR 0.01  2.0 Linear 0.1
->       y = mouseY KR 0.01 10.0 Linear 0.1
->       c = fft' (localBuf 'β' 2048 1) z
->       m = ifft' (pv_ConformalMap c x y)
->   in pan2 (combN m 0.1 0.1 10 * 0.5 + m) 0 1
-
-> g_02 =
->   let o = mce [1, 1.1, 1.5, 1.78, 2.45, 6.7, 8] * 220
->       f = sinOsc KR (mce [0.16, 0.33, 0.41]) 0 * 10 + o
->   in mix (lfSaw AR f 0) * 0.3
-
-> g_03 = soundIn 0
-
-> g_04 = f_01 g_02
-
-> g_05 = f_01 g_03
diff --git a/Help/UGen/pv_Diffuser.help.lhs b/Help/UGen/pv_Diffuser.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_Diffuser.help.lhs
+++ /dev/null
@@ -1,25 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_Diffuser"
-    Sound.SC3.UGen.DB.ugenSummary "PV_Diffuser"
-
-> import Sound.SC3 {- hsc3 -}
-
-> n_01 = "/usr/share/SuperCollider/sounds/a11wlk01.wav"
-> n_02 = "/home/rohan/data/audio/instr/bosendorfer/064/C5.aif"
-
-> m_01 = b_allocRead 12 n_02 0 0
-
-    withSC3 (async m_01)
-
-> g_01 = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing
-> g_02 = soundIn 0
-
-Trigger revised phase shifts with MouseX crossing center of screen
-
-> f_01 z =
->   let f = fft' (localBuf 'α' 2048 1) z
->       x = mouseX KR 0 1 Linear 0.1
->       h = pv_Diffuser f (x >** 0.5)
->   in ifft' h * 0.5
-
-> g_03 = f_01 g_01
-> g_04 = f_01 g_02
diff --git a/Help/UGen/pv_Freeze.help.lhs b/Help/UGen/pv_Freeze.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_Freeze.help.lhs
+++ /dev/null
@@ -1,11 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_Freeze"
-    Sound.SC3.UGen.DB.ugenSummary "PV_Freeze"
-
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let f = fft' (localBuf 'α' 2048 1) (soundIn 0)
->       x = mouseX KR 0 1 Linear 0.1
->       h = X.pv_Freeze f (x >** 0.5)
->   in ifft' h * 0.5
diff --git a/Help/UGen/pv_HainsworthFoote.help.lhs b/Help/UGen/pv_HainsworthFoote.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_HainsworthFoote.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_HainsworthFoote"
-    Sound.SC3.UGen.DB.ugenSummary "PV_HainsworthFoote"
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let i = soundIn 0
->         b = localBuf 'α' 2048 1
->         f = fft' b i
->         x = mouseX KR 0.5 1.25 Linear 0.2
->         h = pv_HainsworthFoote f 1 0 x 0.04
->         o = sinOsc AR (mrg2 440 445) 0 * decay (h * 0.1) 0.1 * 0.1
->     in o + i
-
-spot note transitions
-
-> g_02 =
->     let s = lfSaw AR (lfNoise0 'β' KR 1 * 90 + 400) 0 * 0.5
->         b = localBuf 'γ' 2048 1
->         f = fft' b s
->         d = pv_HainsworthFoote f 1.0 0.0 0.9 0.5
->         t = sinOsc AR 440 0 * decay (d * 0.1) 0.1
->     in mce2 (s * 0.2) t
diff --git a/Help/UGen/pv_Invert.help.lhs b/Help/UGen/pv_Invert.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_Invert.help.lhs
+++ /dev/null
@@ -1,19 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_Invert"
-    Sound.SC3.UGen.DB.ugenSummary "PV_Invert"
-
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}
-
-> g_01 =
->   let s = sinOsc AR 440 0 * 0.4
->       n = pinkNoise 'α' AR * 0.1
->   in s + n
-
-> f_01 z =
->   let c0 = fft' (localBuf 'β' 2048 1) z
->       c1 = pv_Invert c0
->   in mce2 z (ifft' c1) * 0.5
-
-> g_02 = f_01 g_01
-
-> g_03 = f_01 (soundIn 0)
diff --git a/Help/UGen/pv_LocalMax.help.lhs b/Help/UGen/pv_LocalMax.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_LocalMax.help.lhs
+++ /dev/null
@@ -1,22 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_LocalMax"
-    Sound.SC3.UGen.DB.ugenSummary "PV_LocalMax"
-
-> import Sound.SC3 {- hsc3 -}
-
-> n_01 = "/home/rohan/data/audio/pf-c5.snd"
-
-> m_01 = b_allocRead 12 n_01 0 0
-
-     withSC3 (async m_01)
-
-> g_01 = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing
-
-> f_01 z =
->   let f = fft' (localBuf 'α' 2048 1) z
->       x = mouseX KR 0 100 Linear 0.1
->       h = pv_LocalMax f x
->   in ifft' h * 0.5
-
-> g_02 = f_01 g_01
-
-> g_03 = f_01 (soundIn 0)
diff --git a/Help/UGen/pv_MagAbove.help.lhs b/Help/UGen/pv_MagAbove.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_MagAbove.help.lhs
+++ /dev/null
@@ -1,30 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagAbove"
-    Sound.SC3.UGen.DB.ugenSummary "PV_MagAbove"
-
-> import Sound.SC3 {- hsc3 -}
-
-> n_01 = "/home/rohan/data/audio/pf-c5.snd"
-
-> m_01 = b_allocRead 12 n_01 0 0
-
-     withSC3 (async m_01)
-
-> g_01 = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing
-
-> f_01 z n =
->   let f = fft' (localBuf 'α' 2048 1) z
->       x = mouseX KR 0 n Linear 0.1
->       h = pv_MagAbove f x
->   in ifft' h * 0.5
-
-> g_02 = f_01 g_01 100
-
-Synthesised input.
-
-> g_03 =
->   let a = sinOsc KR (squared (sinOsc KR 0.08 0 * 6 + 6.2)) 0 * 100 + 800
->   in sinOsc AR a 0
-
-> g_04 = f_01 g_03 1024
-
-> g_05 = f_01 (soundIn 0) 32
diff --git a/Help/UGen/pv_MagBelow.help.lhs b/Help/UGen/pv_MagBelow.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_MagBelow.help.lhs
+++ /dev/null
@@ -1,30 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagBelow"
-    Sound.SC3.UGen.DB.ugenSummary "PV_MagBelow"
-
-> import Sound.SC3 {- hsc3 -}
-
-> n_01 = "/home/rohan/data/audio/pf-c5.snd"
-
-> m_01 = b_allocRead 12 n_01 0 0
-
-     withSC3 (async m_01)
-
-> g_01 = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing
-
-> f_01 z n =
->   let f = fft' (localBuf 'α' 2048 1) z
->       x = mouseX KR 0 n Linear 0.1
->       h = pv_MagBelow f x
->   in ifft' h * 0.5
-
-> g_02 = f_01 g_01 100
-
-Synthesised input.
-
-> g_03 =
->   let a = sinOsc KR (squared (sinOsc KR 0.08 0 * 6 + 6.2)) 0 * 100 + 800
->   in sinOsc AR a 0
-
-> g_04 = f_01 g_03 1024
-
-> g_05 = f_01 (soundIn 0) 32
diff --git a/Help/UGen/pv_MagClip.help.lhs b/Help/UGen/pv_MagClip.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_MagClip.help.lhs
+++ /dev/null
@@ -1,11 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagClip"
-    Sound.SC3.UGen.DB.ugenSummary "PV_MagClip"
-
-> import Sound.SC3
-
-> g_01 =
->   let f = fft' (localBuf 'α' 2048 1) (soundIn 0)
->       c = 128
->       x = mouseX KR 0 c Linear 0.1
->       h = pv_MagClip f x
->   in ifft' h * 0.5
diff --git a/Help/UGen/pv_MagFreeze.help.lhs b/Help/UGen/pv_MagFreeze.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_MagFreeze.help.lhs
+++ /dev/null
@@ -1,37 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagFreeze"
-    Sound.SC3.UGen.DB.ugenSummary "PV_MagFreeze"
-
-> import Sound.SC3 {- hsc3 -}
-
-Load audio file.
-
-> n_01 = "/home/rohan/data/audio/pf-c5.snd"
-
-> m_01 = [b_allocRead 12 n_01 0 0]
-
-    withSC3 (mapM_ async m_01)
-
-File as signal...
-
-> g_01 = playBuf 1 AR 12 (bufRateScale KR 12) 0 0 Loop DoNothing
-
-Synthesised signal...
-
-> g_02 =
->   let o1 = sinOsc KR 0.08 0
->       o2 = sinOsc KR (squared (o1 * 6 + 6.2)) 0 * 100 + 800
->   in sinOsc AR o2 0
-
-Outside world signal...
-
-> g_03 = soundIn 0
-
-Process (freeze) 'z'...
-
-> f_01 z =
->   let f = fft' (localBuf 'α' 2048 1) z
->       x = mouseX KR 0 1 Linear 0.1
->       h = pv_MagFreeze f (x >** 0.5)
->   in ifft' h * 0.5
-
-> g_04 = f_01 g_03
diff --git a/Help/UGen/pv_MagGate.help.lhs b/Help/UGen/pv_MagGate.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_MagGate.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagGate"
-    Sound.SC3.UGen.DB.ugenSummary "PV_MagGate"
-
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}
-
-> f_01 (lhs,rhs) =
->   let i = soundIn 0
->       c = fft' (localBuf 'α' 2048 1) i
->       x = mouseX KR lhs rhs Linear 0.2
->       y = mouseY KR 0 1 Linear 0.2
->       h = pv_MagGate c x y
->   in ifft' h * 0.5
-
-> g_01 = f_01 (0,100)
-
-> g_02 = f_01 (-50,0)
diff --git a/Help/UGen/pv_MagMap.help.lhs b/Help/UGen/pv_MagMap.help.lhs
--- a/Help/UGen/pv_MagMap.help.lhs
+++ b/Help/UGen/pv_MagMap.help.lhs
@@ -20,7 +20,7 @@
 > t_01 = f_02 [0,1,0] [0.05,0.95] EnvWelch
 
     import Sound.SC3.Plot {- hsc3-plot -}
-    plotTable1 t_01
+    plot_p1_ln [t_01]
 
 > f_03 t l c = withSC3 (sendMessage (b_setn1 10 0 (f_02 t l c)))
 
@@ -30,7 +30,7 @@
 
 > g_03 = f_01 g_01 10
 
-loclBuf fails...
+localBuf fails...
 
 > g_09 = f_01 g_01 (asLocalBuf 'γ' t_01)
 
diff --git a/Help/UGen/pv_MagMul.help.lhs b/Help/UGen/pv_MagMul.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_MagMul.help.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagMul"
-    Sound.SC3.UGen.DB.ugenSummary "PV_MagMul"
-
-> import Sound.SC3 {- hsc3 -}
-
-> f_01 z =
->     let y = lfSaw AR (midiCPS 43) 0 * 0.2
->         c0 = fft' (localBuf 'α' 2048 1) y
->         c1 = fft' (localBuf 'β' 2048 1) z
->         c2 = pv_MagMul c0 c1
->     in ifft' c2 * 0.1
-
-> g_01 = f_01 (whiteNoise 'γ' AR * 0.2)
-
-> g_02 = f_01 (soundIn 0 * 0.5)
diff --git a/Help/UGen/pv_MagSmear.help.lhs b/Help/UGen/pv_MagSmear.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_MagSmear.help.lhs
+++ /dev/null
@@ -1,11 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_MagSmear"
-    Sound.SC3.UGen.DB.ugenSummary "PV_MagSmear"
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let i = soundIn 0
->       c = fft' (localBuf 'α' 2048 1) i
->       x = mouseX KR 0 100 Linear 0.2
->       h = pv_MagSmear c x
->   in ifft' h * 0.5
diff --git a/Help/UGen/pv_Morph.help.lhs b/Help/UGen/pv_Morph.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_Morph.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_Morph"
-    Sound.SC3.UGen.DB.ugenSummary "PV_Morph"
-
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}
-
-> g_01 =
->   let o1 = pulse AR 180 (lfCub KR 1 0 * 0.1 + 0.3) * 0.5
->       o2 = varSaw AR 190 0 (lfCub KR 0.8 0 * 0.4 + 0.5) * 0.5
->       c1 = fft' (localBuf 'α' 2048 1) o1
->       c2 = fft' (localBuf 'β' 2048 1) o2
->       x = mouseX KR 0 1 Linear 0.2
->       h = pv_Morph c1 c2 x
->   in ifft' h * 0.5
diff --git a/Help/UGen/pv_Mul.help.lhs b/Help/UGen/pv_Mul.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_Mul.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_Mul"
-    Sound.SC3.UGen.DB.ugenSummary "PV_Mul"
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let o1 = sinOsc AR 500 0 * 0.5
->       o2 = sinOsc AR (line KR 50 400 5 RemoveSynth) 0 * 0.5
->       c1 = fft' (localBuf 'α' 2048 1) o1
->       c2 = fft' (localBuf 'β' 2048 1) o2
->       h = pv_Mul c1 c2
->   in ifft' h * 0.5
diff --git a/Help/UGen/pv_PlayBuf.help.lhs b/Help/UGen/pv_PlayBuf.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_PlayBuf.help.lhs
+++ /dev/null
@@ -1,21 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_PlayBuf"
-    Sound.SC3.UGen.DB.ugenSummary "PV_PlayBuf"
-
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}
-
-see pv_BufRd for code to allocate and fill analysis buffer (rec_buf)
-
-> g_01 =
->   let rec_buf = 0
->       l_buf = localBuf 'α' 1024 1
->       x = mouseX KR (-1) 1 Linear 0.2
->       c = pv_PlayBuf l_buf rec_buf x 50 1
->   in ifft c 1 0
-
-> g_02 =
->   let rec_buf = 0
->       l_buf = localBuf 'β' 1024 1
->       n = range (-1) 2 (lfNoise2 'γ' KR 0.2)
->       c = pv_PlayBuf l_buf rec_buf n 0 1
->   in ifft c 1 0
diff --git a/Help/UGen/pv_RandComb.help.lhs b/Help/UGen/pv_RandComb.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_RandComb.help.lhs
+++ /dev/null
@@ -1,22 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_RandComb"
-    Sound.SC3.UGen.DB.ugenSummary "PV_RandComb"
-
-> import Sound.SC3 {- hsc3 -}
-
-noise signal
-
-> g_01 = whiteNoise 'α' AR * 0.5
-
-outside world
-
-> g_02 = soundIn 0
-
-processor
-
-> f_01 f z =
->   let t = impulse KR f 0
->       x = mouseX KR 0.6 0.95 Linear 0.1
->       c = pv_RandComb 'α' (fft' (localBuf 'α' 2048 1) z) x t
->   in pan2 (ifft' c) 0 1
-
-> g_03 = f_01 0.5 g_02
diff --git a/Help/UGen/pv_RandWipe.help.lhs b/Help/UGen/pv_RandWipe.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_RandWipe.help.lhs
+++ /dev/null
@@ -1,25 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_RandWipe"
-    Sound.SC3.UGen.DB.ugenSummary "PV_RandWipe"
-
-> import Sound.SC3 {- hsc3 -}
-> import qualified System.Random as R {- random -}
-
-> g_01 =
->   let n0 = R.randomRs (400.0, 1000.0) (R.mkStdGen 0)
->       o0 = map (\n -> lfSaw AR n 0 * 0.1) (take 6 n0)
->   in sum_opt o0
-
-> g_02 =
->   let n1 = R.randomRs (80.0, 400.0) (R.mkStdGen 1)
->       n2 = R.randomRs (0.0, 8.0) (R.mkStdGen 2)
->       o1 = map (\n -> lfPulse AR n 0.0 0.2) (take 6 n1)
->       o2 = map (\n -> sinOsc KR n 0 * 0.2) (take 6 n2)
->   in sum_opt (zipWith (\p s -> p * (max s 0.0)) o1 o2)
-
-> g_03 =
->   let f1 = fft' (localBuf 'α' 2048 1) g_01
->       f2 = fft' (localBuf 'β' 2048 1) g_02
->       x = mouseX KR 0 1 Linear 0.1
->       y = mouseY KR 0 1 Linear 0.1
->       h = pv_RandWipe 'γ' f1 f2 x (y >** 0.5)
->   in pan2 (ifft' h) 0 0.5
diff --git a/Help/UGen/pv_RecordBuf.help.lhs b/Help/UGen/pv_RecordBuf.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_RecordBuf.help.lhs
+++ /dev/null
@@ -1,4 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_RecordBuf"
-    Sound.SC3.UGen.DB.ugenSummary "PV_RecordBuf"
-
-see pv_BufRd
diff --git a/Help/UGen/pv_RectComb.help.lhs b/Help/UGen/pv_RectComb.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_RectComb.help.lhs
+++ /dev/null
@@ -1,34 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_RectComb"
-    Sound.SC3.UGen.DB.ugenSummary "PV_RectComb"
-
-> import Sound.SC3 {- hsc3 -}
-
-noise source
-
-> g_01 = whiteNoise 'α' AR * 0.3
-
-outside world
-
-> g_02 = soundIn 0
-
-mouse control
-
-> f_01 z =
->   let b = localBuf 'β' 2048 1
->       x = mouseX KR 0 0.5 Linear 0.1
->       y = mouseY KR 0 0.5 Linear 0.1
->       c = pv_RectComb (fft' b z) 8 x y
->   in pan2 (ifft' c) 0 1
-
-> g_03 = f_01 g_02
-
-lfo control
-
-> f_02 z =
->   let b = localBuf 'γ' 2048 1
->       p = lfTri KR 0.097 0 *   0.4  + 0.5
->       w = lfTri KR 0.240 0 * (-0.5) + 0.5
->       c = pv_RectComb (fft' b z) 8 p w
->   in pan2 (ifft' c) 0 1
-
-> g_04 = f_02 g_02
diff --git a/Help/UGen/pv_SpectralMap.help.lhs b/Help/UGen/pv_SpectralMap.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_SpectralMap.help.lhs
+++ /dev/null
@@ -1,21 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_SpectralMap"
-    Sound.SC3.UGen.DB.ugenSummary "PV_SpectralMap"
-
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> n_01 = "/usr/share/SuperCollider/sounds/a11wlk01.wav"
-> n_02 = "/home/rohan/data/audio/instr/bosendorfer/064/C5.aif"
-
-> m_01 = b_allocRead 10 n_01 0 0
-
-    withSC3 (async m_01)
-
-> g_01 =
->   let freeze = mouseY KR (-1) 1 Linear 0.2
->       a = localBuf 'α' 2048 1
->       b = localBuf 'β' 2048 1
->       c1 = fft' a (soundIn 0)
->       c2 = fft' b (playBuf 1 AR 10 1 1 0 Loop DoNothing)
->       c3 = X.pv_SpectralMap c1 c2 0.0 freeze (mouseX KR (-1) 1 Linear 0.2) 1 0
->   in ifft' c3
diff --git a/Help/UGen/pv_XFade.help.lhs b/Help/UGen/pv_XFade.help.lhs
deleted file mode 100644
--- a/Help/UGen/pv_XFade.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "PV_XFade"
-    Sound.SC3.UGen.DB.ugenSummary "PV_XFade"
-
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}
-
-> g_01 =
->   let o1 = pulse AR 180 (lfCub KR 1 0 * 0.1 + 0.3) * 0.5
->       o2 = varSaw AR 190 0 (lfCub KR 0.8 0 * 0.4 + 0.5) * 0.5
->       c1 = fft' (localBuf 'α' 2048 1) o1
->       c2 = fft' (localBuf 'β' 2048 1) o2
->       x = mouseX KR 0 1 Linear 0.2
->       h = pv_XFade c1 c2 x
->   in ifft' h * 0.5
diff --git a/Help/UGen/quadC.help.lhs b/Help/UGen/quadC.help.lhs
deleted file mode 100644
--- a/Help/UGen/quadC.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See quadN
diff --git a/Help/UGen/quadL.help.lhs b/Help/UGen/quadL.help.lhs
deleted file mode 100644
--- a/Help/UGen/quadL.help.lhs
+++ /dev/null
@@ -1,1 +0,0 @@
-See quadN
diff --git a/Help/UGen/quadN.help.lhs b/Help/UGen/quadN.help.lhs
deleted file mode 100644
--- a/Help/UGen/quadN.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = quadC AR (sampleRate / 2) 1 (-1) (-0.75) 0 * 0.2
-
-> g_02 =
->   let x = mouseX KR 3.5441 4 Linear 0.1
->   in quadC AR 4000 (negate x) x 0 0.1 * 0.4
-
-> g_03 =
->   let x = mouseX KR 3.5441 4 Linear 0.1
->       f = quadC AR 4 (negate x) x 0 0.1 * 800 + 900
->   in sinOsc AR f 0 * 0.4
diff --git a/Help/UGen/rMEQ.help.lhs b/Help/UGen/rMEQ.help.lhs
deleted file mode 100644
--- a/Help/UGen/rMEQ.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-rm = regalia-mitra
-freq = cut-off frequency (hz)
-rq = reciprocal-of-Q
-k = gain (db)
-
-default parameters
-
-> g_01 = X.rMEQ AR (pinkNoise 'α' AR * 0.1) 440 1 0
-
-> g_02 =
->   let freq = mouseX KR 55 3520 Exponential 0.2
->       rq = mouseY KR 0.01 2.0 Linear 0.2
->       k = 3
->   in X.rMEQ AR (pinkNoise 'α' AR * 0.1) freq rq k
diff --git a/Help/UGen/rMShelf.help.lhs b/Help/UGen/rMShelf.help.lhs
deleted file mode 100644
--- a/Help/UGen/rMShelf.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-rm = regalia-mitra
-freq = cut-off frequency (hz)
-k = gain (db)
-
-default parameters
-
-> g_01 = X.rMShelf2 AR (whiteNoise 'α' AR * 0.1) 440 0
-
-freq = mouse-x
-
-> g_02 =
->   let freq = mouseX KR 55 3520 Exponential 0.2
->   in X.rMShelf2 AR (whiteNoise 'α' AR * 0.1) freq 0
-
-k = mouse-y
-
-> g_03 =
->   let freq = mouseX KR 55 3520 Exponential 0.2
->       k = mouseY KR (-12) 12 Linear 0.2
->   in X.rMShelf2 AR (whiteNoise 'α' AR * 0.1) freq k
diff --git a/Help/UGen/radiansPerSample.help.lhs b/Help/UGen/radiansPerSample.help.lhs
deleted file mode 100644
--- a/Help/UGen/radiansPerSample.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-two pi divided by the nominal sample rate (ie. a very small number)
-
-> g_01 =
->     let f = mce2 radiansPerSample ((2 * pi) / sampleRate) * 5e6
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/ramp.help.lhs b/Help/UGen/ramp.help.lhs
deleted file mode 100644
--- a/Help/UGen/ramp.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Used to lag pitch
-
-> g_01 =
->     let o = lfPulse KR 4 0 0.5 * 50 + 400
->         l = line KR 0 1 15 DoNothing
->         f = ramp o l
->     in sinOsc AR f 0 * 0.3
-
-mouse control
-
-> g_02 =
->     let x = mouseX KR 220 440 Exponential 0
->         x' = ramp x (300 / 1000)
->     in sinOsc AR (mce2 x x') 0 * 0.1
diff --git a/Help/UGen/rand.help.lhs b/Help/UGen/rand.help.lhs
deleted file mode 100644
--- a/Help/UGen/rand.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let f = rand 'α' 200 1200
->       l = rand 'β' (-1) 1
->       e = line KR 0.2 0 0.1 RemoveSynth
->       o = fSinOsc AR f 0
->   in pan2 (o * e) l 1
diff --git a/Help/UGen/randSeed.help.lhs b/Help/UGen/randSeed.help.lhs
deleted file mode 100644
--- a/Help/UGen/randSeed.help.lhs
+++ /dev/null
@@ -1,24 +0,0 @@
-> import Sound.SC3
-
-start a noise patch
-
-> g_01 =
->     let n = uclone 'α' 2 (whiteNoise 'β' AR * 0.05 + dust2 'γ' AR 70)
->         f = lfNoise1 'δ' KR 3 * 5500 + 6000
->     in resonz (n * 5) f 0.5 + n * 0.5
-
-reset the seed at a variable rate (crash?)
-
-> g_02 =
->      let s = 1956 -- control KR "seed" 1956
->          i = impulse KR (mouseX KR 0.1 100 Linear 0.2) 0
->      in randSeed KR i s
-
-always the same (for a given seed)... (crash!)
-
-> g_03 =
->     let sd = 1957
->         n = tiRand 'α' 4 12 (dust 'β' KR 1)
->         f = n * 150 + (mce [0,1])
->         r = randSeed IR 1 sd
->     in mrg2 (sinOsc AR f 0 * 0.1) r
diff --git a/Help/UGen/recordBuf.help.lhs b/Help/UGen/recordBuf.help.lhs
deleted file mode 100644
--- a/Help/UGen/recordBuf.help.lhs
+++ /dev/null
@@ -1,26 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> b_01 :: Num n => n
-> b_01 = 0
-
-Allocate a buffer (assume SR of 48k)
-
-> m_01 = b_alloc b_01 (48000 * 4) 1
-
-    > withSC3 (async m_01)
-
-Record for four seconds (until end of buffer)
-
-> g_01 =
->     let o = formant AR (xLine KR 400 1000 4 DoNothing) 2000 800 * 0.125
->     in mrg2 o (recordBuf AR b_01 0 1 0 1 NoLoop 1 RemoveSynth o)
-
-Play it back
-
-> g_02 = playBuf 1 AR b_01 1 1 0 NoLoop RemoveSynth
-
-Mix second signal equally with existing signal, replay to hear
-
-> g_03 =
->     let o = formant AR (xLine KR 200 1000 4 DoNothing) 2000 800 * 0.125
->     in mrg2 o (recordBuf AR b_01 0 0.5 0.5 1 NoLoop 1 RemoveSynth o)
diff --git a/Help/UGen/redPhasor.help.lhs b/Help/UGen/redPhasor.help.lhs
deleted file mode 100644
--- a/Help/UGen/redPhasor.help.lhs
+++ /dev/null
@@ -1,22 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.HW.External.F0 as F0 {- hsc3 -}
-
-no looping & it will play through once. Mouse x acts as trigger
-
-> g_01 =
->   let tr = mouseX KR 0 1 Linear 0.2 >** 0.5
->   in sinOsc AR (F0.redPhasor KR tr 0.3 400 800 0 500 600) 0 * 0.2
-
-mouse y controls looping on/off, mouse x trigger
-
-> g_02 =
->   let tr = mouseX KR 0 1 Linear 0.2 >** 0.5
->       lp = mouseY KR 0 1 Linear 0.2 >** 0.5
->   in sinOsc AR (F0.redPhasor KR tr 0.3 400 800 lp 500 600) 0 * 0.2
-
-mouse x controls loop rate, mouse y scales the start looppoint
-
-> g_03 =
->   let x = mouseX KR 0 5 Linear 0.2
->       y = mouseY KR 200 500 Linear 0.2
->   in sinOsc AR (F0.redPhasor KR 0 x 400 800 1 y 600) 0 * 0.2
diff --git a/Help/UGen/replaceOut.help.lhs b/Help/UGen/replaceOut.help.lhs
deleted file mode 100644
--- a/Help/UGen/replaceOut.help.lhs
+++ /dev/null
@@ -1,69 +0,0 @@
-> import Sound.OSC {- hosc -}
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = replaceOut 0 (sinOsc AR 440 0 * 0.1)
-
-Send signal to a bus, overwrite existing signal.
-
-> f_02 a_out b_out c_out =
->     let a = a_out 0 (sinOsc AR (mce [330, 331]) 0 * 0.1)
->         b = b_out 0 (sinOsc AR (mce [880, 881]) 0 * 0.1)
->         c = c_out 0 (sinOsc AR (mce [120, 121]) 0 * 0.1)
->     in mrg [a, b, c]
-
-The MRG nodes are ordered right to left, so below b replaces c and a is summed
-
-> g_02 = f_02 out replaceOut out
-
-Compare to, where c is also heard
-
-> g_03 = f_02 out out out
-
-- a writes noise to bus 24
-- b reads 24 and replaces with filtered variant
-- c reads 24 and writes to 0
-
-> g_04 =
->     let a = out 24 (pinkNoise 'α' AR * 0.1)
->         b = replaceOut 24 (bpf (in' 1 AR 24) 440 1)
->         c = out 0 (in' 1 AR 24)
->     in mrg [c,b,a]
-
-    > putStrLn$ synthstat g_04
-
-~~~~
-number of constants       : 5
-number of controls        : 0
-control rates             : []
-number of unit generators : 7
-unit generator rates      : [(AR,7)]
-unit generator set        : *,BPF,In,Out,PinkNoise,ReplaceOut
-unit generator sequence   : PinkNoise,*,Out,In,BPF,ReplaceOut,Out
-~~~~
-
-Signal/effect model using separate groups operating at the same bus.
-
-> n_01 =
->     let d = dust 'α' AR 1
->         n = whiteNoise 'β' AR
->         i = decay (d * 0.5) 0.2 * n
->     in synthdef "n_01" (out 0 i)
-
-> n_02 =
->     let i = in' 1 AR 0
->     in synthdef "n_02" (replaceOut 0 (combC i 0.2 0.2 3))
-
-> m_01 =
->     [g_new [(1,AddToTail,0)]
->     ,g_new [(2,AddToTail,0)]
->     ,d_recv n_01
->     ,d_recv n_02
->     ,s_new "n_01" (-1) AddToTail 1 []
->     ,s_new "n_02" (-1) AddToTail 2 []]
-
-> f_01 m =
->     if isAsync m
->     then async m >> return ()
->     else sendMessage m
-
-    withSC3 (mapM_ f_01 m_01)
diff --git a/Help/UGen/resonz.help.lhs b/Help/UGen/resonz.help.lhs
deleted file mode 100644
--- a/Help/UGen/resonz.help.lhs
+++ /dev/null
@@ -1,58 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-The Q factor of a resonator is defined as the center-frequency (cf) divided by the bandwidth (bw).
-
-    > let q cf bw = cf / bw
-
-The higher the Q the narrower the filter.
-
-    > let bw_set = [1,4,10,100,200,400]
-    > map (q 400) bw_set == [400,100,40,4,2,1]
-
-Q multipled by the band-width gives the center-frequency.
-
-    > map (\bw -> q 400 bw * bw) bw_set == replicate (length bw_set) 400
-
-The third argument to resonz is the reciprocal of Q (rq).
-
-    > let rq cf = recip . q cf
-    > map (rq 400) [1,4,10,100,200,400] == [1/400,1/100,1/40,1/4,1/2,1]
-
-1/Q multiplied by the center-frequency gives the bandwidth.
-
-    > map (\bw -> rq 400 bw * 400) bw_set == bw_set
-
-> g_01 =
->   let n = whiteNoise 'α' AR
->   in resonz (n * 0.5) 2000 0.1
-
-Modulate frequency
-
-> g_02 =
->   let n = whiteNoise 'α' AR
->       f = xLine KR 1000 8000 10 RemoveSynth
->   in resonz (n * 0.5) f 0.05
-
-Modulate bandwidth
-
-> g_03 =
->   let n = whiteNoise 'α' AR
->       bw = xLine KR 1 0.001 8 RemoveSynth
->   in resonz (n * 0.5) 2000 bw
-
-Modulate bandwidth opposite direction
-
-> g_04 =
->   let n = whiteNoise 'α' AR
->       bw = xLine KR 0.001 1 8 RemoveSynth
->   in resonz (n * 0.5) 2000 bw
-
-Mouse exam (1/Q = bandwidth / center-frequency)
-
-> g_05 =
->   let n = pinkNoise 'α' AR
->       m = mouseX KR 36 85 Linear 0.2 {- midi note -}
->       w = mouseY KR 0.1 5 Linear 0.2 {- bandwidth -}
->       f = midiCPS (floorE m) {- centre frequency -}
->       rq = w / f {- 1/Q (reciprocal of Q) -}
->   in resonz (n * 0.5) f rq
diff --git a/Help/UGen/rhpf.help.lhs b/Help/UGen/rhpf.help.lhs
deleted file mode 100644
--- a/Help/UGen/rhpf.help.lhs
+++ /dev/null
@@ -1,5 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let f = fSinOsc KR (xLine KR 0.7 300 20 RemoveSynth) 0 * 3600 + 4000
->   in rhpf (saw AR 200 * 0.1) f 0.2
diff --git a/Help/UGen/ring1.help.lhs b/Help/UGen/ring1.help.lhs
deleted file mode 100644
--- a/Help/UGen/ring1.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Operator.ring1"
-    :t ring1
-
-> import Sound.SC3 {- hsc3 -}
-
-> o_01 = fSinOsc AR 800 0
-> o_02 = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0
-> g_01 = ring1 o_01 o_02 * 0.125
-
-is equivalent to:
-
-> g_02 = ((o_01 * o_02) + o_01) * 0.125
diff --git a/Help/UGen/ring2.help.lhs b/Help/UGen/ring2.help.lhs
deleted file mode 100644
--- a/Help/UGen/ring2.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Operator.ring2"
-    :t ring2
-
-> import Sound.SC3 {- hsc3 -}
-
-> o_01 = fSinOsc AR 800 0
-> o_02 = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0
-> g_01 = ring2 o_01 o_02 * 0.125
-
-is equivalent to:
-
-> g_02 = ((o_01 * o_02) + o_01 + o_02) * 0.125
diff --git a/Help/UGen/ring3.help.lhs b/Help/UGen/ring3.help.lhs
deleted file mode 100644
--- a/Help/UGen/ring3.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Operator.ring3"
-    :t ring3
-
-> import Sound.SC3 {- hsc3 -}
-
-> o_01 = fSinOsc AR 800 0
-> o_02 = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0
-> g_01 = ring3 o_01 o_02 * 0.125
-
-is equivalent to:
-
-> g_02 = (o_01 * o_01 * o_02) * 0.125
diff --git a/Help/UGen/ring4.help.lhs b/Help/UGen/ring4.help.lhs
deleted file mode 100644
--- a/Help/UGen/ring4.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-    Sound.SC3.UGen.Help.viewSC3Help "Operator.ring4"
-    :t ring4
-
-> import Sound.SC3 {- hsc3 -}
-
-> a = fSinOsc AR 800 0
-> b = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0
-> g_01 = ring4 a b * 0.125
-
-is equivalent to:
-
-> g_02 = (((a * a * b) - (a * b * b))) * 0.125
diff --git a/Help/UGen/ringz.help.lhs b/Help/UGen/ringz.help.lhs
deleted file mode 100644
--- a/Help/UGen/ringz.help.lhs
+++ /dev/null
@@ -1,32 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let n = dust 'α' AR 3
->   in ringz (n * 0.3) 2000 2
-
-> g_02 =
->   let n = whiteNoise 'α' AR
->   in ringz (n * 0.005) 2000 0.5
-
-Modulate frequency
-
-> g_03 =
->   let {n = whiteNoise 'α' AR
->     ;f = xLine KR 100 3000 10 RemoveSynth}
->   in ringz (n * 0.005) f 0.5
-
-> g_04 =
->   let f = xLine KR 100 3000 10 RemoveSynth
->   in ringz (impulse AR 6 0.3) f 0.5
-
-Modulate ring time
-
-> g_05 =
->   let rt = xLine KR 4 0.04 8 RemoveSynth
->   in ringz (impulse AR 6 0.3) 2000 rt
-
-Modulate ring time opposite direction
-
-> g_06 =
->   let rt = xLine KR 0.04 4 8 RemoveSynth
->   in ringz (impulse AR 6 0.3) 2000 rt
diff --git a/Help/UGen/rlpf.help.lhs b/Help/UGen/rlpf.help.lhs
deleted file mode 100644
--- a/Help/UGen/rlpf.help.lhs
+++ /dev/null
@@ -1,20 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let n = whiteNoise 'α' AR
->       f = sinOsc AR 0.5 0 * 40 + 220
->   in rlpf n f 0.1
-
-> g_02 =
->   let f = fSinOsc KR (xLine KR 0.7 300 20 RemoveSynth) 0 * 3600 + 4000
->   in rlpf (saw AR 200 * 0.1) f 0.2
-
-> g_03 =
->   let ctl = rlpf (saw AR 5 * 0.1) 25 0.03
->   in sinOsc AR (ctl * 200 + 400) 0 * 0.1
-
-> g_04 =
->   let x = mouseX KR 2 200 Exponential 0.2
->       y = mouseY KR 0.01 1 Exponential 0.2
->       ctl = rlpf (saw AR 5 * 0.1) x y
->   in sinOsc AR (ctl * 200 + 400) 0 * 0.1
diff --git a/Help/UGen/rlpfD.help.lhs b/Help/UGen/rlpfD.help.lhs
deleted file mode 100644
--- a/Help/UGen/rlpfD.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let s = mix (lfSaw AR (mce2 120 180) 0 * 0.33)
->       f = linExp (lfCub KR 0.1 (0.5 * pi)) (-1) 1 280 1500
->   in X.rlpfd s f 0.6 0.5 * 3
diff --git a/Help/UGen/rlpfd.help.lhs b/Help/UGen/rlpfd.help.lhs
deleted file mode 100644
--- a/Help/UGen/rlpfd.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let s = mix (lfSaw AR (mce2 120 180) 0 * 0.33)
->       f = linExp (lfCub KR 0.1 (0.5 * pi)) (-1) 1 280 1500
->   in X.rlpfd s f 0.6 0.5 * 3
diff --git a/Help/UGen/rotate2.help.lhs b/Help/UGen/rotate2.help.lhs
deleted file mode 100644
--- a/Help/UGen/rotate2.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Rotation of stereo sound, via LFO.
-
-> g_01 =
->     let x = pinkNoise 'α' AR
->         y = lfTri AR 800 0 * lfPulse KR 3 0 0.3 * 0.2
->     in rotate2 x y (lfSaw KR 0.1 0)
-
-Rotation of stereo sound, via mouse.
-
-> g_02 =
->     let x = mix (lfSaw AR (mce [198..201]) 0 * 0.1)
->         y = sinOsc AR 900 0 * lfPulse KR 3 0 0.3 * 0.2
->         p = mouseX KR 0 2 Linear 0.2
->     in rotate2 x y p
diff --git a/Help/UGen/roundUp.help.lhs b/Help/UGen/roundUp.help.lhs
deleted file mode 100644
--- a/Help/UGen/roundUp.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let x = mouseX KR 60 4000 Linear 0.1
->         f = roundUp x 100
->     in sinOsc AR f 0 * 0.1
-
-> g_02 =
->     let n = line KR 24 108 6 RemoveSynth
->     in saw AR (midiCPS (roundUp n 1)) * 0.2
diff --git a/Help/UGen/runningMax.help.lhs b/Help/UGen/runningMax.help.lhs
deleted file mode 100644
--- a/Help/UGen/runningMax.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = dust 'α' AR 20
->         t = impulse AR 0.4 0
->         f = runningMax n t * 500 + 200
->     in t + sinOsc AR f 0 * 0.2
-
-follow a sine lfo, reset rate controlled by mouse x
-
-> g_02 =
->     let t = impulse KR (mouseX KR 0.01 2 Linear 0.1) 0
->         f = runningMax (sinOsc KR 0.2 0) t * 500 + 200
->     in t + sinOsc AR f 0 * 0.2
diff --git a/Help/UGen/runningMin.help.lhs b/Help/UGen/runningMin.help.lhs
deleted file mode 100644
--- a/Help/UGen/runningMin.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Follow a sine lfo, reset rate controlled by mouseX
-
-> g_01 =
->     let o = sinOsc KR 2 pi
->         x = mouseX KR 0.01 10 Exponential 0.1
->         t = impulse AR x 0
->         f = runningMin o t * 500 + 200
->     in t + sinOsc AR f 0 * 0.1
-
-> g_02 =
->     let n = dust 'α' AR 20
->         t = impulse AR 0.4 0
->         f = runningMin n t * 500 + 200
->     in sinOsc AR f 0 * 0.2
diff --git a/Help/UGen/runningSum.help.lhs b/Help/UGen/runningSum.help.lhs
deleted file mode 100644
--- a/Help/UGen/runningSum.help.lhs
+++ /dev/null
@@ -1,25 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-distorts of course - would need scaling
-
-> g_01 = runningSum (soundIn 4) 40
-
-Running Average over x samples
-
-> g_02 = let x = 100 in runningSum (lfSaw AR 440 0) x * recip x
-
-RMS Power
-
-> g_03 =
->     let input = lfSaw AR 440 0
->         numsamp = 30
->     in runningSum (input * input) numsamp / (sqrt numsamp)
-
-composite UGen
-
-> g_04 = runningSumRMS (soundIn 4) 40
-
-> g_05 =
->     let z = soundIn 4
->         a = runningSum z 40
->     in sinOsc AR 440 0 * a * 0.1
diff --git a/Help/UGen/sampleDur.help.lhs b/Help/UGen/sampleDur.help.lhs
deleted file mode 100644
--- a/Help/UGen/sampleDur.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-`sampleDur` is the reciprocal of the nominal sample rate of the server
-
-> g_01 =
->     let f = mce2 sampleRate (recip sampleDur) * 0.01
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/sampleRate.help.lhs b/Help/UGen/sampleRate.help.lhs
deleted file mode 100644
--- a/Help/UGen/sampleRate.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-the current nominal sample rate of the server
-
-> g_01 =
->     let sr = 48000 {- 44100 -}
->         f = mce2 sampleRate sr * 0.01
->     in sinOsc AR f 0 * 0.1
-
-The server status command can extract nominal and actual sample rates
-from a running server.
-
-    > import Control.Monad
-    > withSC3 (liftM2 (,) serverSampleRateNominal serverSampleRateActual)
diff --git a/Help/UGen/saw.help.lhs b/Help/UGen/saw.help.lhs
deleted file mode 100644
--- a/Help/UGen/saw.help.lhs
+++ /dev/null
@@ -1,32 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-SC3 saw is descending
-
-> g_01 = saw AR (xLine KR 40 4000 6 RemoveSynth) * 0.1
-
-negation is ascending
-
-> g_02 = negate g_01
-
-compare to the non-bandlimited lfSaw
-
-> g_03 = lfSaw AR (xLine KR 40 4000 6 RemoveSynth) 0 * 0.1
-
-Two band limited sawtooth waves thru a resonant low pass filter
-
-> g_04 =
->     let f = xLine KR 8000 400 5 DoNothing
->     in rlpf (saw AR (mce2 100 250) * 0.1) f 0.05
-
-saw is not useful as a phasor, see lfSaw or phasor
-
-> g_05 = sin (range 0 two_pi (negate (saw AR 440))) * 0.2
-
-Drawings
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen1 0.1 (saw AR 50) -- descending
-    > plot_ugen1 0.002 (saw AR 5000) -- ragged
-
-![](sw/hsc3/Help/SVG/saw.0.svg)
-![](sw/hsc3/Help/SVG/saw.1.svg)
diff --git a/Help/UGen/sawDPW.help.lhs b/Help/UGen/sawDPW.help.lhs
deleted file mode 100644
--- a/Help/UGen/sawDPW.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 = X.sawDPW AR (xLine KR 2000 20 10 DoNothing) 0 * 0.1
-
-> g_02 = X.sawDPW AR (mouseX KR 200 12000 Exponential 0.2) 0 * 0.2
diff --git a/Help/UGen/scaleNeg.help.lhs b/Help/UGen/scaleNeg.help.lhs
deleted file mode 100644
--- a/Help/UGen/scaleNeg.help.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-> import Prelude hiding ((<*)) {- base -}
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let o = fSinOsc AR 1000 0
->         l = line AR 1 (-1) 4 RemoveSynth
->     in scaleNeg o l * 0.1
-
-written out:
-
-> g_02 =
->     let o = fSinOsc AR 1000 0
->         l = line AR 1 (-1) 4 RemoveSynth
->         c = o <* 0
->     in (c * (o * l) + (1 - c) * o) * 0.1
diff --git a/Help/UGen/schmidt.help.lhs b/Help/UGen/schmidt.help.lhs
deleted file mode 100644
--- a/Help/UGen/schmidt.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-threshold octave jumps
-
-> g_01 =
->     let n = lfNoise1 'α' KR 3
->         o = schmidt n (-0.15) 0.15 + 1
->     in sinOsc AR (n * 200 + 500 * o) 0 * 0.1
diff --git a/Help/UGen/select.help.lhs b/Help/UGen/select.help.lhs
deleted file mode 100644
--- a/Help/UGen/select.help.lhs
+++ /dev/null
@@ -1,21 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = 3/2
->         a = mce [sinOsc AR 440 0, saw AR 440, pulse AR 440 0.1]
->     in select (lfSaw KR 1 0 * n + n) a * 0.2
-
-Here used as a sequencer:
-
-> g_02 =
->     let n = 10
->         a = mce [517, 403, 89, 562, 816, 107, 241, 145, 90, 224]
->         c = n / 2
->         f = select (lfSaw KR 0.5 0 * c + c) a
->     in saw AR f * 0.2
-
-i-rate...
-
-> g_03 =
->     let a = mce [rand 'α' 110 220,rand 'β' 220 440,rand 'γ' 440 880]
->     in sinOsc AR (select (rand 'δ' 0 3) a) 0 * 0.1
diff --git a/Help/UGen/selectX.help.lhs b/Help/UGen/selectX.help.lhs
deleted file mode 100644
--- a/Help/UGen/selectX.help.lhs
+++ /dev/null
@@ -1,20 +0,0 @@
-    :t selectX
-
-selectX is a composite ugen graph
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let n = 3/2
->       f = mce2 440 441
->       a = mce [sinOsc AR f 0, saw AR f, pulse AR f 0.1]
->   in mix (selectX (lfSaw KR 1 0 * n + n) a * 0.2)
-
-Here used as a sequencer:
-
-> g_02 =
->   let n = 10
->       a = mce [517, 403, 89, 562, 816, 107, 241, 145, 90, 224]
->       c = n / 2
->       f = mix (selectX (lfSaw KR 0.5 0 * c + c) a)
->   in saw AR f * 0.2
diff --git a/Help/UGen/sendReply.help.lhs b/Help/UGen/sendReply.help.lhs
deleted file mode 100644
--- a/Help/UGen/sendReply.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.OSC {- hosc3 -}
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let s0 = lfNoise0 'α' KR 5
->       s1 = lfNoise0 'β' KR 5
->       o = sinOsc AR (s0 * 200 + 500) 0 * s1 * 0.1
->   in mrg [o,sendReply s0 0 "/send-reply" [s0,s1]]
-
-> f_01 :: (DuplexOSC m) => m Message
-> f_01 = withNotifications (waitReply "/send-reply")
-
-    withSC3 f_01
diff --git a/Help/UGen/setResetFF.help.lhs b/Help/UGen/setResetFF.help.lhs
deleted file mode 100644
--- a/Help/UGen/setResetFF.help.lhs
+++ /dev/null
@@ -1,21 +0,0 @@
-> Sound.SC3.UGen.Help.viewSC3Help "SetResetFF"
-> Sound.SC3.UGen.DB.ugenSummary "SetResetFF"
-
-> import Sound.SC3
-
-d0 is the set trigger, d1 the reset trigger
-
-> let {n = brownNoise 'α' AR
->     ;d0 = dust 'β' AR 5
->     ;d1 = dust 'γ' AR 5}
-> in audition (out 0 (setResetFF d0 d1 * n * 0.2))
-
-silence
-
-> let tr = setResetFF (impulse KR 5 0) (impulse KR 10 0)
-> in audition (out 0 (brownNoise 'α' AR * 0.1 * decay2 tr 0.01 0.05))
-
-duty cycle
-
-> let tr = 1 - setResetFF (impulse KR 10 0) (impulse KR 5 0)
-> in audition (out 0 (brownNoise 'α' AR * 0.1 * decay2 tr 0.01 0.05))
diff --git a/Help/UGen/shaper.help.lhs b/Help/UGen/shaper.help.lhs
deleted file mode 100644
--- a/Help/UGen/shaper.help.lhs
+++ /dev/null
@@ -1,70 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.Common.Buffer.Gen as Gen {- hsc3 -}
-
-function to generate wavetable buffer using b_gen_cheby
-
-> mk_b a =
->     let tbl_f = [Normalise,Wavetable,Clear]
->         msg = [b_alloc 10 512 1,b_gen_cheby 10 tbl_f a]
->     in withSC3 (mapM_ async msg)
-
-    > mk_b [1,0,1,1,0,1]
-
-hear waveshaper at pure (sin) tone
-
-> g_01 =
->     let z = sinOsc AR 300 0 * line KR 0 1 6 DoNothing
->     in shaper 10 z * 0.1
-
-plot wavetable (as in-buffer layout, as plain wavetable)
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > withSC3 (plot_buffer1 10)
-    > withSC3 (plot_wavetable1 10)
-
-![](sw/hsc3/Help/SVG/shaper.0.svg)
-![](sw/hsc3/Help/SVG/shaper.1.svg)
-
-variations
-
-    > mk_b [0.25,0.5,0.25]
-
-> g_02 =
->     let z = sinOsc AR 400 (pi / 2) * line KR 0 1 6 DoNothing
->     in shaper 10 z * 0.1
-
-wave shape external signal
-
-    > mk_b [1,0,1,1,0,1]
-
-> g_03 =
->     let z = soundIn 0
->         x = sinOsc KR (1/4) 0
->     in xFade2 z (shaper 10 z) x 0.5
-
-    > mk_b [1,0,1,1,0,1,0.5,0,0.25,0,0.75,1]
-
-> g_04 =
->     let z = soundIn 0
->         x = mouseX KR (-1) 1 Linear 0.2
->     in xFade2 z (shaper 10 z) x 0.5
-
-generate table and use localBuf
-
-> t_01 :: (Enum n,Floating n,Ord n) => [n]
-> t_01 = Gen.cheby 257 [1,0,1,1,0,1] -- [1,0,1,1,0,1,0.5,0,0.25,0,0.75,1]
-
-> t_02 :: (Enum n,Floating n,Ord n) => [n]
-> t_02 = to_wavetable_nowrap t_01
-
-    > plotTable1 t_01
-    > plotTable1 t_02
-    > length t_02 == 512
-
-![](sw/hsc3/Help/SVG/shaper.2.svg)
-![](sw/hsc3/Help/SVG/shaper.3.svg)
-
-> g_05 =
->     let z = sinOsc AR 300 0 * line KR 0 1 6 DoNothing
->         b = asLocalBuf 'α' t_02
->     in shaper b z * 0.1
diff --git a/Help/UGen/silent.help.lhs b/Help/UGen/silent.help.lhs
deleted file mode 100644
--- a/Help/UGen/silent.help.lhs
+++ /dev/null
@@ -1,3 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = silent 2
diff --git a/Help/UGen/sinOsc.help.lhs b/Help/UGen/sinOsc.help.lhs
deleted file mode 100644
--- a/Help/UGen/sinOsc.help.lhs
+++ /dev/null
@@ -1,119 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Fixed frequency (hz) and initial-phase (radians)
-
-> g_00 = sinOsc AR (midiCPS 69) 0 * 0.75 -- 415 440
-
-Control input for frequency
-
-> g_01 = sinOsc AR (midiCPS (control KR "mnn" 69)) 0 * 0.25
-
-    import Sound.OSC {- hosc -}
-    withSC3 (sendMessage (n_set1 (-1) "mnn" 64))
-
-Modulate freq
-
-> g_02 = sinOsc AR (xLine KR 2000 200 1 RemoveSynth) 0 * 0.5
-
-Modulate freq
-
-> g_03 =
->     let f1 = xLine KR 1 1000 9 RemoveSynth
->         f2 = sinOsc AR f1 0 * 200 + 800 -- (-1,1) ; (-200,200) ; (600,1000)
->     in sinOsc AR f2 0 * 0.25
-
-Modulate phase
-
-> g_04 =
->     let ph = sinOsc AR (xLine KR 20 8000 10 RemoveSynth) 0 * 2 * pi
->     in sinOsc AR 800 ph * 0.1
-
-Mouse control
-
-> g_05 =
->     let x = mouseX KR 40 10000 Exponential 0.2
->         y = mouseY KR 0.01 0.25 Exponential 0.2
->     in sinOsc AR x 0 * y
-
-Simple bell-like tone.
-
-> g_06 =
->     let f = mce [0.5,1,1.19,1.56,2,2.51,2.66,3.01,4.1]
->         a = mce [0.25,1,0.8,0.5,0.9,0.4,0.3,0.6,0.1]
->         o = sinOsc AR (500 * f) 0 * a
->         e = envGen KR 1 0.1 0 1 RemoveSynth (envPerc 0.01 10)
->     in mix o * e
-
-"When two pure tones of slightly different frequency are superposed,
-our ears perceive audible beats at a rate given by the difference of
-the two frequencies."
-
-> g_07 =
->     let f0 = 220
->         f1 = 221.25
->         d = abs (f1 - f0)
->         i = impulse AR d 0 * max (sinOsc KR 0.05 0 * 0.1) 0
->     in sinOsc AR (mce2 f0 f1) 0 * 0.1 + i
-
-"When two tones are sounded together, a tone of lower frequency is
-frequently heard. Such a tone is called a combination tone.  The most
-commonly heard combination tone occurs at a frequency f2 - f1."
-
-> g_08 =
->     let f1 = 300
->         f2 = 300 * 3/2 {- 450 -}
->         f3 = abs (f2 - f1) {- 150 -}
->         a3 = max (sinOsc KR 0.05 0 * 0.1) 0
->     in mix (sinOsc AR (mce3 f1 f2 f3) 0 * mce3 0.1 0.1 a3)
-
-With frequency of zero, operates as table lookup variant of sin.
-
-> mk_phasor (l,r) f = phasor AR 0 ((r - l) * f / sampleRate) l r l
-
-> g_09 =
->   let ph = mk_phasor (0,two_pi) 440
->       o1 = sinOsc AR 440 0
->       o2 = sinOsc AR 0 ph
->       o3 = sin ph
->   in mce2 o1 (xFade2 o2 o3 (lfTri KR 0.1 0) 1) * 0.1
-
-sync, ie. <https://www.listarc.bham.ac.uk/lists/sc-dev/msg58316.html>
-
-> g_10 =
->   let dt = mce2 1.0 1.003
->	freq = mouseX KR (100 * dt) (3000 * dt) Exponential 0.2
->       sync_freq = mouseY KR 100 500 Exponential 0.2
->       ph_freq = impulse AR sync_freq 0 + impulse AR freq 0
->       o = sinOsc AR 0 (phasor AR ph_freq (freq / sampleRate) 0 1 0 * 2 * pi)
->   in o * 0.15
-
-reverse sync
-
-> g_11 =
->   let dt = mce2 1.0 1.003
->       freq = mouseX KR (100 * dt) (3000 * dt) Exponential 0.2
->       sync_freq = mouseY KR 100 500 Exponential 0.2
->       direction = toggleFF (impulse AR sync_freq 0) * (-2) + 1
->       o = sinOsc AR 0 (wrap (sweep (impulse AR freq 0) (direction * freq)) 0 (2 * pi))
->   in o * 0.15
-
-reverse cycle & reverse sync
-
-> g_12 =
->   let freq = mouseX KR (100 * mce2 1.0 1.003) (3000 * mce2 1.0 1.003) Exponential 0.2
->       sync_freq = mouseY KR 100 500 Exponential 0.2
->       direction = toggleFF (impulse AR sync_freq 0 + impulse AR freq 0) * (-2) + 1
->       o = sinOsc AR 0 (wrap (sweep (k2a 0) (direction * freq)) 0 (2 * pi))
->   in o * 0.5
-
-15.5 khz
-
-> f_13 x = pan2 (sinOsc AR x 0) 0
-
-> g_13 = f_13 15500 0.75
-
-12 khz - 15.5 khz sweep
-
-> f_14 x = pan2 (sinOsc AR (range_hs x (sinOsc KR (1/6) 0)) 0) 0
-
-> g_14 = f_14 (12000,15500) 0.75
diff --git a/Help/UGen/sinOscFB.help.lhs b/Help/UGen/sinOscFB.help.lhs
deleted file mode 100644
--- a/Help/UGen/sinOscFB.help.lhs
+++ /dev/null
@@ -1,25 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-    {SinOscFB.ar([400,301],MouseX.kr(0,4))*0.1}.play
-
-> g_01 =
->     let x = mouseX KR 0 4 Linear 0.2
->     in sinOscFB AR (mce2 400 301) x * 0.1
-
-    {var y = MouseY.kr(10,1000,'exponential')
-    ;var x = MouseX.kr(0.5pi,pi)
-    ;SinOscFB.ar(y,x) * 0.1}.play
-
-> g_02 =
->     let y = mouseY KR 10 1000 Exponential 0.2
->         x = mouseX KR (pi/2) pi Linear 0.2
->     in sinOscFB AR y x * 0.1
-
-    {var y = MouseY.kr(1,1000,'exponential')
-    ;var x = MouseX.kr(0.5pi,pi)
-    ;SinOscFB.ar(100 * SinOscFB.ar(y)+200,x) * 0.1}.play
-
-> g_03 =
->     let y = mouseY KR 1 1000 Exponential 0.2
->         x = mouseX KR (pi/2) pi Linear 0.2
->     in sinOscFB AR (100 * sinOscFB AR y 0 + 200) x * 0.1
diff --git a/Help/UGen/sineShaper.help.lhs b/Help/UGen/sineShaper.help.lhs
deleted file mode 100644
--- a/Help/UGen/sineShaper.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-{SineShaper.ar(SinOsc.ar([400, 404], 0, 0.2), MouseX.kr(0, 1))}.play
-
-> g_01 = X.sineShaper (sinOsc AR (mce2 400 404) 0 * 0.2) (mouseX KR 0 1 Linear 0.2)
-
-{SineShaper.ar(SoundIn.ar, MouseX.kr(0, 1))}.play
-
-> g_02 = X.sineShaper (soundIn 0) (mouseX KR 0 1 Linear 0.2)
diff --git a/Help/UGen/slew.help.lhs b/Help/UGen/slew.help.lhs
deleted file mode 100644
--- a/Help/UGen/slew.help.lhs
+++ /dev/null
@@ -1,25 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = let z = lfPulse AR 800 0 0.5 * 0.1 in mce2 z (slew z 4000 4000)
-
-> g_02 = let z = saw AR 800 * 0.1 in mce2 z (slew z 400 400)
-
-> f_01 s =
->   let x = mouseX KR 200 12000 Exponential 0.2
->       y = mouseY KR 200 12000 Exponential 0.2
->   in slew s x y * 0.15
-
-> g_03 = f_01 (0 - saw AR 440)
-> g_04 = f_01 (lfPulse AR 800 0 0.5)
-
-Drawings
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > let z = lfPulse AR 800 0 0.5
-    > plot_ugen1 0.05 z
-    > plot_ugen1 0.05 (slew z 4000 4000)
-    > plot_ugen1 0.05 (slew z 500 500)
-
-![](sw/hsc3/Help/SVG/slew.0.svg)
-![](sw/hsc3/Help/SVG/slew.1.svg)
-![](sw/hsc3/Help/SVG/slew.2.svg)
diff --git a/Help/UGen/slope.help.lhs b/Help/UGen/slope.help.lhs
deleted file mode 100644
--- a/Help/UGen/slope.help.lhs
+++ /dev/null
@@ -1,19 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> f_01 f0 =
->     let a = lfNoise2 'α' AR f0 {- quadratic noise -}
->         b = slope a {- first derivative, line segments -}
->         c = slope b {- second derivative, constant segments -}
->         s = 0.0002
->     in [a, b * s, c * s * s]
-
-> g_01 =
->     let f = mce (f_01 2) * 220 + 220
->     in mix (sinOsc AR f 0 * 0.1)
-
-Drawing
-
-    > import Sound.SC3.Plot {- hsc3-plot -}
-    > plot_ugen 0.05 (mce (f_01 2000))
-
-![](sw/hsc3/Help/SVG/slope.0.svg)
diff --git a/Help/UGen/sms.help.lhs b/Help/UGen/sms.help.lhs
deleted file mode 100644
--- a/Help/UGen/sms.help.lhs
+++ /dev/null
@@ -1,16 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-sine reconstruction left channel, noises on right
-
-> g_01 =
->   let z = soundIn 0
->       y = mouseY KR 1 50 Linear 0.2
->       x = mouseX KR 0.5 4 Linear 0.2
->   in X.sms {- AR -} z 50 y 8 0.3 x 0 0 0 1 (-1)
-
-default param
-
-> g_02 =
->   let z = soundIn 0
->   in X.sms {- AR -} z 80 80 4 0.2 1 0 0 0 1 (-1)
diff --git a/Help/UGen/softClip.help.lhs b/Help/UGen/softClip.help.lhs
deleted file mode 100644
--- a/Help/UGen/softClip.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let e = xLine KR 0.1 10 10 RemoveSynth
->         o = fSinOsc AR 500 0.0
->     in softClip (o * e) * 0.25
diff --git a/Help/UGen/softClipAmp.help.lhs b/Help/UGen/softClipAmp.help.lhs
deleted file mode 100644
--- a/Help/UGen/softClipAmp.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}
-
-> g_01 = softClipAmp4 AR (sinOsc AR 220 0 * 0.1) (mouseX KR 1 16 Linear 0.2)
-
-> g_02 = softClipAmp4 AR (soundIn 0) (mouseX KR 1 8 Linear 0.2)
-
diff --git a/Help/UGen/sos.help.lhs b/Help/UGen/sos.help.lhs
deleted file mode 100644
--- a/Help/UGen/sos.help.lhs
+++ /dev/null
@@ -1,25 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Same as TwoPole
-
-> g_01 =
->   let theta = line KR (0.2 * pi) pi 5 RemoveSynth
->       rho = line KR 0.6 0.99 5 RemoveSynth
->       b1 = 2 * rho * cos theta
->       b2 = - (rho * rho)
->   in sos (lfSaw AR 200 0 * 0.1) 1 0 0 b1 b2
-
-<http://www.earlevel.com/main/2011/01/02/biquad-formulas/>
-
-> g_02 =
->   let fc = 100
->       sr = 48000
->       k = tan (pi * fc / sr)
->       q = 0.707
->       norm = 1 / (1 + k / q + k * k)
->       a0 = k * k * norm
->       a1 = 2 * a0
->       a2 = a0
->       b1 = 2 * (k * k - 1) * norm
->       b2 = (1 - k / q + k * k) * norm
->   in sos (whiteNoise 'a' AR * 0.2) a0 a1 a2 (- b1) (- b2)
diff --git a/Help/UGen/soundIn.help.lhs b/Help/UGen/soundIn.help.lhs
deleted file mode 100644
--- a/Help/UGen/soundIn.help.lhs
+++ /dev/null
@@ -1,21 +0,0 @@
-soundIn is a composite of the UGens in' and numOutputBuses
-
-> import Sound.SC3 {- hsc3 -}
-
-copy fifth second channel (index 4) to first output channel (index 0)
-
-> gr_01 = soundIn 0
-
-Copy input from 1 & 0 to outputs 0 & 1.
-
-> gr_02 = soundIn (mce2 1 0)
-
-io matrix:
-
-  0 1 2 3
-0 *
-1     *
-2   *
-3       *
-
-> gr_03 = soundIn (mce [0, 2, 1, 3])
diff --git a/Help/UGen/specCentroid.help.lhs b/Help/UGen/specCentroid.help.lhs
deleted file mode 100644
--- a/Help/UGen/specCentroid.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-as the number of harmonics increases, the centroid is pushed higher
-
-> g_01 =
->   let f0 = mouseY KR 1000 100 Exponential 0.2
->       nh = mouseX KR 1 100 Exponential 0.2
->       z = blip AR f0 nh
->       f = fft' (localBuf 'α' 2048 1) z
->       c = specCentroid KR f
->       p = poll' (impulse KR 1 0) c 0 (label "c")
->   in sinOsc AR p 0 * 0.1
diff --git a/Help/UGen/specFlatness.help.lhs b/Help/UGen/specFlatness.help.lhs
deleted file mode 100644
--- a/Help/UGen/specFlatness.help.lhs
+++ /dev/null
@@ -1,11 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}
-
-> g_01 =
->   let z = soundIn 0
->       g = 1 {- gain, set as required -}
->       a = poll' 1 (wAmp KR z 0.05) 0 (label "a")
->       f = fft' (localBuf 'α' 2048 1) z
->       c = poll' 1 (specCentroid KR f) 0 (label "c")
->       w = poll' 1 (specFlatness KR f) 0 (label "w")
->   in bpf (pinkNoise 'a' AR) c w * a * g
diff --git a/Help/UGen/splay.help.lhs b/Help/UGen/splay.help.lhs
deleted file mode 100644
--- a/Help/UGen/splay.help.lhs
+++ /dev/null
@@ -1,59 +0,0 @@
-splay is a composite UGen, arguments are:
-inArray spread=1 level=1 center=0 levelComp=true
-
-> import Sound.SC3 {- hsc3 -}
-
-mouse control
-
-> g_01 =
->     let i = 6
->         r = map (\e -> rand e 10 20) (take i ['α'..])
->         n = lfNoise2 'β' KR (mce r)
->         x = mouseX KR (-1) 1 Linear 0.1
->         y = mouseY KR 1 0 Linear 0.1
->         ci = constant . fromIntegral
->         f = mce [1 .. ci i] + 3 * 100
->         o = sinOsc AR (n * 200 + f) 0
->     in splay o y 0.2 x True
-
-n_set control
-
-> g_02 =
->     let i = 10
->         s = control KR "spread" 1
->         l = control KR "level" 0.2
->         c = control KR "center" 0
->         r = map (\e -> rand e 10 20) (take i ['α'..])
->         ci = constant . fromIntegral
->         f = mce [1 .. ci i] + 3 * 100
->         n = lfNoise2 'β' KR (mce r) * 200 + f
->     in splay (sinOsc AR n 0) s l c True
-
-full stereo
-
-    > import Sound.OSC {- hosc -}
-    > withSC3 (sendMessage (n_set (-1) [("spread",1),("center",0)]))
-
-less wide
-
-    > withSC3 (sendMessage (n_set (-1) [("spread",0.5),("center",0)]))
-
-mono center
-
-    > withSC3 (sendMessage (n_set (-1) [("spread",0),("center",0)]))
-
-from center to right
-
-    > withSC3 (sendMessage (n_set (-1) [("spread",0.5),("center",0.5)]))
-
-all left
-
-    > withSC3 (sendMessage (n_set (-1) [("spread",0),("center",-1)]))
-
-single channel input
-
-> g_03 =
->     let x = mouseX KR (-1) 1 Linear 0.1
->         y = mouseY KR 1 0 Linear 0.1
->         o = sinOsc AR (lfNoise2 'α' KR 6 * 9 + 440) 0 * 0.1
->     in splay o y 0.2 x True
diff --git a/Help/UGen/spreader.help.lhs b/Help/UGen/spreader.help.lhs
deleted file mode 100644
--- a/Help/UGen/spreader.help.lhs
+++ /dev/null
@@ -1,18 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let theta = pi / 2
->       filtsPerOctave = 8
->   in X.spreader AR (pinkNoise 'α' AR * 0.1) theta filtsPerOctave
-
-> g_02 =
->   let theta = mouseX KR 0 (pi / 2) Linear 0.2
->       filtsPerOctave = 8
->   in X.spreader AR (pinkNoise 'α' AR * 0.1) theta filtsPerOctave
-
-> g_03 =
->   let in_ = sinOsc AR (mouseX KR 110 880 Exponential 0.2) 0 * 0.1
->       theta = pi / 2
->       filtsPerOctave = 8
->   in X.spreader AR in_ theta filtsPerOctave
diff --git a/Help/UGen/squiz.help.lhs b/Help/UGen/squiz.help.lhs
deleted file mode 100644
--- a/Help/UGen/squiz.help.lhs
+++ /dev/null
@@ -1,27 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> f_01 zmax s =
->   let x = mouseX KR 1 10 Exponential 0.2
->       y = mouseY KR 1 zmax Linear 0.2
->   in X.squiz s x y 0.1 * 0.1
-
-Squiz of sin oscillator
-
-> g_01 = f_01 10 (sinOsc AR 440 0)
-
-
-> g_02 = f_01 100 (soundIn 0)
-
-Load sound file to buffer zero
-
-    > let fn = "/home/rohan/data/audio/pf-c5.aif"
-    > let fn = "/home/rohan/opt/src/supercollider/sounds/a11wlk01.wav"
-    > withSC3 (async (b_allocRead 0 fn 0 0))
-
-Squiz of audio file.
-
-> g_03 =
->   let r = bufRateScale KR 0
->       p = playBuf 1 AR 0 (r * 0.5) 1 0 Loop DoNothing
->   in f_01 100 p
diff --git a/Help/UGen/standard2DL.help.lhs b/Help/UGen/standard2DL.help.lhs
deleted file mode 100644
--- a/Help/UGen/standard2DL.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Bindings.DB.External {- hsc3 -}
-
-> def_k = 1.4
-> def_x0 = 4.9789799812499
-> def_y0 = 5.7473416156381
-
-mouse-controlled param
-
-> g_01 = standard2DL AR 11025 44100 (mouseX KR 0.9 4 Linear 0.2) def_x0 def_y0 * 0.3
-
-as a frequency control
-
-> g_02 =
->   let x = mouseX KR 0.9 4 Linear 0.2
->       f = standard2DL AR 10 20 x def_x0 def_y0 * 800 + 900
->   in sinOsc AR f 0 * 0.3
diff --git a/Help/UGen/standardL.help.lhs b/Help/UGen/standardL.help.lhs
deleted file mode 100644
--- a/Help/UGen/standardL.help.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_00 = standardL AR (sampleRate / 2) 1.0 0.5 0 * 0.2
-
-vary frequency
-
-> g_01 = standardL AR (mouseX KR 20 sampleRate Linear 0.2) 1 0.5 0 * 0.3
-
-mouse-controlled param
-
-> g_02 = standardL AR (sampleRate / 2) (mouseX KR 0.9 4 Linear 0.2) 0.5 0 * 0.3
-
-as a frequency control
-
-> g_03 = sinOsc AR (standardL AR 40 (mouseX KR 0.9 4 Linear 0.2) 0.5 0 * 800 + 900) 0 * 0.3
diff --git a/Help/UGen/stepper.help.lhs b/Help/UGen/stepper.help.lhs
deleted file mode 100644
--- a/Help/UGen/stepper.help.lhs
+++ /dev/null
@@ -1,52 +0,0 @@
-> import Sound.OSC {- hosc -}
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let i = impulse KR 10 0
->       f = stepper i 0 4 16 (-3) 4 * 100
->   in sinOsc AR f 0 * 0.1
-
-Using Stepper and BufRd for sequencing
-
-> compose :: [t -> t] -> t -> t
-> compose = foldl (flip (.)) id
-
-> rvb :: ID z => z -> UGen -> UGen
-> rvb z0 s =
->   let f z1 i =
->         let dly = mce [rand ((z0,z1),'α') 0 0.5
->                       ,rand ((z0,z1),'β') 0 0.5]
->         in allpassN i 0.05 dly (rand z1 1.5 2)
->   in compose (map f (id_seq 5 'γ')) s
-
-> stpr :: UGen
-> stpr =
->   let rate = mouseX KR 1.75 2.25 Exponential 0.1
->       clock = impulse KR rate 0
->       envl = decay2 clock 0.002 2.5
->       indx = stepper clock 0 0 15 1 0
->       freq = bufRdN 1 KR 10 indx Loop
->       ffreq = lag2 freq 0.1 + mce [0,0.3]
->       lfo = sinOsc KR 0.2 (mce [0,pi/2]) * 0.0024 + 0.0025
->       top = mix (lfPulse AR (freq * mce [1,1.5,2]) 0 0.3)
->       chn = [\s -> rlpf s ffreq 0.3 * envl
->             ,\s -> rlpf s ffreq 0.3 * envl
->             ,\s -> s * 0.5
->             ,\s -> combL s 1 (0.66 / rate) 2 * 0.8 + s
->             ,\s -> s + (rvb 'γ' s * 0.3)
->             ,\s -> leakDC s 0.1
->             ,\s -> delayL s 0.1 lfo + s
->             ,\s -> onePole s 0.9]
->   in compose chn top
-
-> stpr_init :: DuplexOSC m => m ()
-> stpr_init = do
->   let n = [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]
->   _ <- async (b_alloc 10 128 1)
->   sendMessage (b_setn 10 [(0,n)])
-
-    > withSC3 stpr_init
-    > audition stpr
diff --git a/Help/UGen/stkBandedWG.help.lhs b/Help/UGen/stkBandedWG.help.lhs
deleted file mode 100644
--- a/Help/UGen/stkBandedWG.help.lhs
+++ /dev/null
@@ -1,32 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Record.Plain.StkBandedWG {- hsc3-rec -}
-
-> g_01 = mkStkBandedWG stkBandedWGR
-
-instr: Uniform Bar = 0, Tuned Bar = 1, Glass Harmonica = 2, Tibetan Bowl = 3
-
-> g_02 = mkStkBandedWG stkBandedWGR {instr = 3}
-
-> g_03 =
->   let tr = impulse KR (mouseX KR 0.5 12 Linear 0.2) 0 - 0.5
->       u = stkBandedWGR
->           {freq = midiCPS (tExpRand 'α' 24 96 tr)
->           ,modalresonance = tRand 'ζ' 0 127 tr
->           ,instr = 3
->           ,trig_ = tr}
->   in mkStkBandedWG u
-
-setstriking: 0 = Plucked, 127 = Bowed
-
-> g_04 =
->   let u = stkBandedWGR
->           {freq = rand 'α' 110 440
->           ,instr = iRand 'β' 1 3
->           ,bowpressure = iRand 'γ' 32 96
->           ,bowmotion = rand 'δ' 32 96
->           ,integration = rand 'ε' 0 64
->           ,modalresonance = rand 'ζ' 32 96
->           ,bowvelocity = rand 'η' 64 96
->           ,setstriking = 127
->           ,trig_ = 1}
->   in mkStkBandedWG u
diff --git a/Help/UGen/stkMandolin.help.lhs b/Help/UGen/stkMandolin.help.lhs
deleted file mode 100644
--- a/Help/UGen/stkMandolin.help.lhs
+++ /dev/null
@@ -1,29 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Record.Plain.StkMandolin {- hsc3-rec -}
-
-> g_01 =
->   let x = mouseX KR 0.25 16 Linear 0.2
->       tr = impulse KR x 0 - 0.5
->       u = stkMandolinR
->         {freq = midiCPS (tiRand 'α' 32 96 tr)
->         ,bodysize = tRand 'β' 0 127 tr
->         ,pickposition = tRand 'γ' 0 127 tr
->         ,stringdamping = tRand 'δ' 0 127 tr
->         ,stringdetune = tRand 'ε' 0 127 tr
->         ,aftertouch = tRand 'ζ' 0 127 tr
->         ,trig_ = tr}
->   in mkStkMandolin u
-
-> g_02 =
->   let x = mouseX KR 3 16 Linear 0.2
->       tr = impulse KR x 0 - 0.5 -- trig
->       tr3 = pulseDivider tr 3 0
->       u = stkMandolinR
->         {freq = midiCPS (tiRand 'α' 54 66 tr)
->         ,bodysize = tRand 'β' 72 94 tr3
->         ,pickposition = tRand 'γ' 32 42 tr3
->         ,stringdamping = tRand 'δ' 64 72 tr3
->         ,stringdetune = tRand 'ε' 0 4 tr3
->         ,aftertouch = tRand 'ζ' 2 8 tr3
->         ,trig_ = tr}
->   in mkStkMandolin u
diff --git a/Help/UGen/stkModalBar.help.lhs b/Help/UGen/stkModalBar.help.lhs
deleted file mode 100644
--- a/Help/UGen/stkModalBar.help.lhs
+++ /dev/null
@@ -1,37 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Record.Plain.StkModalBar {- hsc3-rec -}
-
-instrument: Marimba=0, Vibraphone=1, Agogo=2, Wood1=3, Reso=4, Wood2=5, Beats=6, Two Fixed=7, Clump=8
-
-> g_01 =
->   let x = mouseX KR 0.25 12 Linear 0.2
->       tr = impulse KR x 0 - 0.5
->       u = stkModalBarR
->         {freq = midiCPS (tiRand 'α' 25 96 tr)
->         ,instrument = tiRand 'β' 0 9 tr
->         ,stickhardness = tRand 'γ' 0 127 tr
->         ,stickposition = tRand 'δ' 0 127 tr
->         ,vibratogain = tRand 'ε' 0 127 tr
->         ,vibratofreq = tRand 'ζ' 0 127 tr
->         ,directstickmix = tRand 'η' 0 127 tr
->         ,volume = tRand 'θ' 0 127 tr
->         ,trig_ = tr}
->   in mkStkModalBar u
-
-> g_02 =
->   let x = mouseX KR 1 12 Linear 0.2
->       tr = impulse KR x 0 - 0.5
->       tr3 = pulseDivider tr 3 0
->       u = stkModalBarR
->         {freq = midiCPS (tiRand 'α' 52 64 tr)
->         ,instrument = 1
->         ,stickhardness = tRand 'β' 10 50 tr3
->         ,stickposition = tRand 'γ' 40 80 tr3
->         ,vibratogain = tRand 'δ' 66 98 tr3
->         ,vibratofreq = tRand 'ε' 4 12 tr3
->         ,directstickmix = tRand 'ζ' 0 1 tr3
->         ,volume = tRand 'η' 16 48 tr3
->         ,trig_ = tr}
->   in mkStkModalBar u
-
-<https://ccrma.stanford.edu/software/stk/classstk_1_1ModalBar.html>
diff --git a/Help/UGen/stkMoog.help.lhs b/Help/UGen/stkMoog.help.lhs
deleted file mode 100644
--- a/Help/UGen/stkMoog.help.lhs
+++ /dev/null
@@ -1,40 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Record.Plain.StkMoog {- hsc3-rec -}
-
-> g_01 =
->   let tr = mouseButton KR 0 1 0 - 0.5
->       u = stkMoogR
->         {freq = midiCPS (tiRand 'α' 12 96 tr)
->         ,filterQ = tRand 'β' 0 127 tr
->         ,sweeprate = tRand 'γ' 0 127 tr
->         ,vibfreq = tRand 'δ' 0 127 tr
->         ,vibgain = tRand 'ε' 0 127 tr
->         ,gain = tRand 'ζ' 0 127 tr
->         ,trig_ = tr}
->   in mkStkMoog u
-
-> g_02 =
->   let x = mouseX KR 0.25 16 Linear 0.2
->       tr = impulse KR x 0 - 0.5
->       u = stkMoogR
->         {freq = midiCPS (tiRand 'α' 24 72 tr)
->         ,filterQ = tRand 'β' 0 32 tr
->         ,sweeprate = tRand 'γ' 0 32 tr
->         ,vibfreq = tRand 'δ' 0 96 tr
->         ,vibgain = tRand 'ε' 0 16 tr
->         ,gain = tRand 'ζ' 32 127 tr
->         ,trig_ = tr}
->   in mkStkMoog u
-
-> g_03 =
->   let nsig z l r f = range l r (lfNoise2 z KR f)
->       scl = asLocalBuf 'α' [0,2,3.2,5,7,9,10]
->       mnn = 48 + degreeToKey scl (nsig 'β' 0 15 0.35) 12
->       u = stkMoogR
->         {freq = midiCPS mnn
->         ,filterQ = nsig 'γ' 0 64 0.5
->         ,sweeprate = nsig 'δ' 0 64 0.5
->         ,vibfreq = nsig 'ε' 0 64 0.5
->         ,vibgain = nsig 'ζ' 0 16 0.5
->         ,gain = nsig 'η' 16 96 0.5}
->   in mkStkMoog u
diff --git a/Help/UGen/stkPluck.help.lhs b/Help/UGen/stkPluck.help.lhs
deleted file mode 100644
--- a/Help/UGen/stkPluck.help.lhs
+++ /dev/null
@@ -1,11 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Record.Plain.StkPluck {- hsc3-rec -}
-
-> g_01 = mkStkPluck stkPluckR
-
-> g_02 =
->   let u = stkPluckR
->           {freq = midiCPS (iRand 'α' 32 96)
->           ,decay_ = rand 'β' 0 127}
->       s = leakDC (mkStkPluck u) 0.995
->   in mrg2 s (detectSilence s 0.01 0.5 RemoveSynth)
diff --git a/Help/UGen/stkShakers.help.lhs b/Help/UGen/stkShakers.help.lhs
deleted file mode 100644
--- a/Help/UGen/stkShakers.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import Sound.SC3.UGen.Record.Plain.StkShakers {- hsc3-rec -}
-
-> gr_01 = mkStkShakers stkShakersR
-
-> gr_02 =
->     let x = mouseX KR 0.25 4 Linear 0.2
->         tr = impulse KR x 0 - 0.5
->         u = stkShakersR
->           {instr = tRand 'α' 0 23 tr
->           ,energy = tRand 'β' 0 127 tr
->           ,decay_ = tRand 'γ' 0 127 tr
->           ,objects = tRand 'δ' 0 127 tr
->           ,resfreq = tRand 'ε' 0 127 tr}
->     in mkStkShakers u
-
-<https://ccrma.stanford.edu/software/stk/classstk_1_1Shakers.html>
diff --git a/Help/UGen/streson.help.lhs b/Help/UGen/streson.help.lhs
deleted file mode 100644
--- a/Help/UGen/streson.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-<http://www.csounds.com/manual/html/streson.html>
-
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> k_01 = recip (linExp (lfCub KR 0.1 (0.5 * pi)) (-1) 1 280 377)
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plot_ugen_nrt (20,1) 16.0 k_01
-
-> f_01 z = X.streson z k_01 0.9 * 0.3
-
-> g_01 = f_01 (lfSaw AR (mce2 220 180) 0 * 0.2)
-
-> g_02 = f_01 (soundIn 0)
-
-see also Sound.SC3.Data.Modal.modal_frequency_ratios
diff --git a/Help/UGen/sub.help.lhs b/Help/UGen/sub.help.lhs
deleted file mode 100644
--- a/Help/UGen/sub.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let o = fSinOsc AR 800 0
->         n = pinkNoise 'α' AR
->     in (o - n) * 0.1
-
-DC offset.
-
-> g_02 = fSinOsc AR 440 0 * 0.1 - 0.5
-
-Optimises identity
-
-> g_03 = (sinOsc AR 440 0 - 0) * 0.1
diff --git a/Help/UGen/subsampleOffset.help.lhs b/Help/UGen/subsampleOffset.help.lhs
deleted file mode 100644
--- a/Help/UGen/subsampleOffset.help.lhs
+++ /dev/null
@@ -1,30 +0,0 @@
-> import Sound.OSC {- hosc -}
-> import Sound.SC3 {- hsc3 -}
-
-Impulse train that can be moved between samples
-
-> sy_01 =
->     let a = control KR "a" 0
->         i = impulse AR 2000 0 * 0.3
->         d = sampleDur
->         x = 4
->         o = (1 - subsampleOffset) + mouseX KR 0 a Linear 0.1
->         r = delayC i (d * (1 + x)) (d * (o + x))
->     in synthdef "s" (offsetOut 0 r)
-
-Create two pulse trains one sample apart, move one relative to the
-other.  When cursor is at the left, the impulses are adjacent, on the
-right, they are exactly 1 sample apart.  View this with an
-oscilloscope.
-
-> run s = do
->       {_ <- async (d_recv s)
->       ;t <- time
->       ;sr <- serverSampleRateActual
->       ;let {t' = t + 0.2
->            ;dt = 1 / sr
->            ;m n = s_new "s" (-1) AddToTail 1 [("a", n)]}
->        in do {sendBundle (bundle t' [m 3])
->              ;sendBundle (bundle (t' + dt) [m 0]) }}
-
-   > withSC3 (run sy_01)
diff --git a/Help/UGen/sum3.help.lhs b/Help/UGen/sum3.help.lhs
deleted file mode 100644
--- a/Help/UGen/sum3.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = sum3 (sinOsc AR 440 0) (sinOsc AR 441 0) (sinOsc AR 442 0) * 0.1
-
-there is an optimiser/re-writer, applicable at ADD
-
-> g_02 = (sinOsc AR 440 0 + sinOsc AR 441 0 + sinOsc AR 442 0) * 0.1
-
-> g_03 = mix (sinOsc AR (mce [440 .. 442]) 0) * 0.1
diff --git a/Help/UGen/sum4.help.lhs b/Help/UGen/sum4.help.lhs
deleted file mode 100644
--- a/Help/UGen/sum4.help.lhs
+++ /dev/null
@@ -1,5 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = sum4 (sinOsc AR 440 0) (sinOsc AR 441 0) (sinOsc AR 442 0) (sinOsc AR 443 0) * 0.1
-
-> g_02 = mix (sinOsc AR (mce [440 .. 443]) 0) * 0.1
diff --git a/Help/UGen/sumSqr.help.lhs b/Help/UGen/sumSqr.help.lhs
deleted file mode 100644
--- a/Help/UGen/sumSqr.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let a = fSinOsc AR 800 0
->         b = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0
->     in sumSqr a b * 0.125
-
-Written out:
-
-> g_02 =
->     let a = fSinOsc AR 800 0
->         b = fSinOsc AR (xLine KR 200 500 5 DoNothing) 0
->     in (a * a + b * b) * 0.125
diff --git a/Help/UGen/svf.help.lhs b/Help/UGen/svf.help.lhs
deleted file mode 100644
--- a/Help/UGen/svf.help.lhs
+++ /dev/null
@@ -1,23 +0,0 @@
-> import Sound.OSC {- hosc -}
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let signal = lfSaw AR (range 110 35 (lfSaw KR 2 0)) 0
->       cutoff = mouseX KR 20 20000 Exponential 0.2
->       res = mouseY KR 1 0 Linear 0.2
->       k = control KR
->       low = k "low" 0.1
->       band = k "band" 0.0
->       high = k "high" 0.0
->       notch = k "notch" 0.0
->       peak_ = k "peak" 0.0
->   in X.svf signal cutoff res low band high notch peak_
-
-> f_01 k v = withSC3 (sendMessage (n_set1 (-1) k v))
-
-    f_01 "low" 0.1
-    f_01 "band" 0.0
-    f_01 "high" 0.0
-    f_01 "notch" 0.0
-    f_01 "peak" 0.0
diff --git a/Help/UGen/sweep.help.lhs b/Help/UGen/sweep.help.lhs
deleted file mode 100644
--- a/Help/UGen/sweep.help.lhs
+++ /dev/null
@@ -1,70 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Using sweep to modulate sine frequency
-
-> g_01 =
->   let x = mouseX KR 0.5 20 Exponential 0.1
->       t = impulse KR x 0
->       f = sweep t 700 + 500
->   in sinOsc AR f 0 * 0.2
-
-Load audio to buffer
-
-> n_01 = "/home/rohan/data/audio/pf-c5.aif"
-
-> m_01 = b_allocRead 0 n_01 0 0
-
-    > withSC3 (maybe_async m_01)
-
-Using sweep to index into a buffer
-
-> g_02 =
->   let x = mouseX KR 0.5 20 Exponential 0.1
->       t = impulse AR x 0
->       p = sweep t (bufSampleRate KR 0)
->   in bufRdL 1 AR 0 p NoLoop
-
-Backwards, variable offset
-
-> g_03 =
->   let n = lfNoise0 'α' KR 15
->       x = mouseX KR 0.5 10 Exponential 0.1
->       t = impulse AR x 0
->       r = bufSampleRate KR 0
->       p = sweep t (negate r) + (bufFrames KR 0 * n)
->   in bufRdL 1 AR 0 p NoLoop
-
-Raising rate
-
-> g_04 =
->   let x = mouseX KR 0.5 10 Exponential 0.1
->       t = impulse AR x 0
->       r = sweep t 2 + 0.5
->       p = sweep t (bufSampleRate KR 0 * r)
->   in bufRdL 1 AR 0 p NoLoop
-
-f0 (sc-users, 2012-02-09)
-
-> g_05 =
->   let lf = range 0.01 1.25 (lfNoise2 'α' KR 1)
->       du = duty AR lf 0 DoNothing lf
->       tr = abs (hpz1 du) >** 0
->       ph = sweep tr (1/du)
->       fr = linExp ph 0 1 400 800
->   in sinOsc AR fr 0 * 0.2
-
-line segments, set start & end values, transition time and trigger.
-continues past end point if not re-triggered.
-
-> g_06 =
->   let tr = tr_control "tr" 0
->       st = control KR "st" 440
->       en = control KR "en" 880
->       tm = control KR "tm" 2
->       rt = ((en - st) / tm)
->       sw = sweep tr rt + st
->   in sinOsc AR sw 0 * 0.2
-
-    > import Sound.OSC {- hosc -}
-    > withSC3 (sendMessage (n_set (-1) [("st",660),("en",550),("tm",4),("tr",1)]))
-    > withSC3 (sendMessage (n_set (-1) [("st",110),("en",990),("tm",1),("tr",1)]))
diff --git a/Help/UGen/switchDelay.help.lhs b/Help/UGen/switchDelay.help.lhs
deleted file mode 100644
--- a/Help/UGen/switchDelay.help.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-simple feedback delay
-
-> g_01 = X.switchDelay (soundIn 0) 1 1 1 0.99 20
-
-> g_02 = X.switchDelay (soundIn 0) 1 0.7 0.4 0.6 20
-
-change the buffer read pointer periodically.
-
-> g_03 =
->   let ix = stepper (impulse KR 0.5 0) 0 0 3 1 0
->       dt = select ix (mce [0.02,0.1,0.725,0.25])
->   in X.switchDelay (soundIn 0) 1 0.6 dt 0.7 20
diff --git a/Help/UGen/syncSaw.help.lhs b/Help/UGen/syncSaw.help.lhs
deleted file mode 100644
--- a/Help/UGen/syncSaw.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let f = line KR 100 800 12 RemoveSynth
->     in syncSaw AR 100 f * 0.1
-
-Mouse control
-
-> g_02 =
->     let sy_f = mouseY KR 80 220 Exponential 0.2
->         sw_f = sy_f * mouseX KR 1 3 Linear 0.2
->     in syncSaw AR sy_f sw_f * 0.1
diff --git a/Help/UGen/t2a.help.lhs b/Help/UGen/t2a.help.lhs
deleted file mode 100644
--- a/Help/UGen/t2a.help.lhs
+++ /dev/null
@@ -1,19 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let tr = impulse KR (mouseX KR 1 100 Exponential 0.2) 0
->     in ringz (t2a tr 0) 800 0.01 * 0.4
-
-compare with k2a (oscilloscope)
-
-> g_02 =
->     let tr = impulse KR 200 0
->     in lag (mce2 (t2a tr 0) (k2a tr)) 0.001
-
-removing jitter by randomising offset
-
-> g_03 =
->     let tr = impulse KR (mouseX KR 1 100 Exponential 0.2) 0
->         o = range 0 (blockSize - 1) (whiteNoise 'β' KR)
->     in ringz (t2a tr o) 880 0.1 * 0.4
-
diff --git a/Help/UGen/t2k.help.lhs b/Help/UGen/t2k.help.lhs
deleted file mode 100644
--- a/Help/UGen/t2k.help.lhs
+++ /dev/null
@@ -1,5 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->   let tr = t2k (dust 'α' AR 4)
->   in trig tr 0.1 * sinOsc AR 800 0 * 0.1
diff --git a/Help/UGen/tBetaRand.help.lhs b/Help/UGen/tBetaRand.help.lhs
deleted file mode 100644
--- a/Help/UGen/tBetaRand.help.lhs
+++ /dev/null
@@ -1,24 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->     let t = dust 'α' KR 10
->         f = X.tBetaRand 'β' 300 3000 0.1 0.1 t
->     in sinOsc AR f 0 * 0.1
-
-mouse control of parameters (...scsynth -> 100% CPU)
-
-> g_02 =
->     let t = dust 'α' AR 10
->         p1 = mouseX KR 1 5 Linear 0.2
->         p2 = mouseY KR 1 5 Linear 0.2
->         f = X.tBetaRand 'β' 300 3000 p1 p2 t
->     in sinOsc AR f 0 * 0.1
-
-...audio rate crashes server...
-
-> g_03 =
->     let t = dust 'α' AR 100
->         p1 = mouseX KR 1 5 Linear 0.2
->         p2 = mouseY KR 1 5 Linear 0.2
->     in lag (X.tBetaRand 'β' (-1) 1 p1 p2 t) (10 / 48000)
diff --git a/Help/UGen/tBrownRand.help.lhs b/Help/UGen/tBrownRand.help.lhs
deleted file mode 100644
--- a/Help/UGen/tBrownRand.help.lhs
+++ /dev/null
@@ -1,24 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->     let t = dust 'α' KR 10
->         dist = mouseX KR 0 5 Linear 0.2
->         f = X.tBrownRand 'β' 300 3000 1 dist t
->     in sinOsc AR f 0 * 0.1
-
-> g_02 =
->     let t = dust 'α' KR 10
->         n = X.tBrownRand 'β' 0 1 0.2 0 t
->         f = linExp n 0 1 300 3000
->         o = sinOsc AR f 0
->         l = X.tBrownRand 'γ' (-1) 1 1 4 t
->     in pan2 o l 0.1
-
-audio rate noise
-
-> g_03 =
->   let x = mouseX KR 500 5000 Exponential 0.2
->       y = mouseY KR 10 500 Exponential 0.2
->       t = dust 'α' AR x
->   in lag (X.tBrownRand 'β' (-1) 1 0.2 0 t) (y / 48000)
diff --git a/Help/UGen/tChoose.help.lhs b/Help/UGen/tChoose.help.lhs
deleted file mode 100644
--- a/Help/UGen/tChoose.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-tChoose is a composite of tIRand and select.
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let x = mouseX KR 1 1000 Exponential 0.1
->         t = dust 'a' AR x
->         f = midiCPS (tIRand 'b' 48 60 t)
->         o = let a = mce [sinOsc AR f 0
->                         ,saw AR (f * 2)
->                         ,pulse AR (f * 0.5) 0.1]
->             in tChoose 'c' t a
->     in o * 0.1
diff --git a/Help/UGen/tDelay.help.lhs b/Help/UGen/tDelay.help.lhs
deleted file mode 100644
--- a/Help/UGen/tDelay.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let z = impulse AR 2 0
->         z' = tDelay z 0.5
->         o = sinOsc AR 440 0 * 0.1
->     in mce [z * 0.1,toggleFF z' * o]
diff --git a/Help/UGen/tDuty.help.lhs b/Help/UGen/tDuty.help.lhs
deleted file mode 100644
--- a/Help/UGen/tDuty.help.lhs
+++ /dev/null
@@ -1,43 +0,0 @@
-> import Data.List {- base -}
-> import Sound.SC3 {- hsc3 -}
-
-Play a little rhythm
-
-> g_01 =
->     let d = dseq 'α' dinf (mce [0.1, 0.2, 0.4, 0.3])
->     in tDuty AR d 0 DoNothing 1 0
-
-Amplitude changes
-
-> g_02 =
->     let d0 = dseq 'α' dinf (mce [0.1, 0.2, 0.4, 0.3])
->         d1 = dseq 'β' dinf (mce [0.1, 0.4, 0.01, 0.5, 1.0])
->     in ringz (tDuty AR d0 0 DoNothing d1 1) 1000 0.1
-
-Mouse control.
-
-> g_03 =
->     let d = dseq 'α' dinf (mce [0.1, 0.4, 0.01, 0.5, 1.0])
->         x = mouseX KR 0.003 1 Exponential 0.1
->     in ringz (tDuty AR x 0 DoNothing d 1) 1000 0.1 * 0.5
-
-Note that the 440 is the shorter pitch, since gap is set to false
-
-> g_04 =
->     let d0 = dser 'α' 12 (mce [0.1, 0.3])
->         d1 = dser 'β' 12 (mce [440, 880])
->         t = tDuty AR d0 0 RemoveSynth d1 0
->     in sinOsc AR (latch t t) 0 * 0.1
-
-Abstraction
-
-> g_05 =
->     let bp n d act = let (e,t) = unzip d
->                          mk z l = dser z n (mce l)
->                          sq = tDuty AR (mk 'α' t) 0 act (mk 'β' e) 0
->                      in latch sq sq
->         bp' d = bp (genericLength d) d
->         tm m = let f (e,t) = (e,t * m) in map f
->         f1 = midiCPS (bp 35 (tm 0.125 [(60,1),(63,1),(67,2),(68,1),(62,1)]) RemoveSynth)
->         f2 = midiCPS (bp' [(60,1),(63,0.5),(67,0.5),(68,1),(62,1)] DoNothing)
->     in sinOsc AR (mce2 f1 f2) 0 * 0.1
diff --git a/Help/UGen/tExpRand.help.lhs b/Help/UGen/tExpRand.help.lhs
deleted file mode 100644
--- a/Help/UGen/tExpRand.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_00 =
->  let f = tExpRand 'α' 300.0 3000.0 (dust 'β' KR 10)
->  in sinOsc AR f 0 * 0.1
-
-> g_01 :: UId m => m UGen
-> g_01 = do
->  f <- tExpRandM 300.0 3000.0 =<< dustM KR 10
->  return (sinOsc AR f 0 * 0.1)
diff --git a/Help/UGen/tGaussRand.help.lhs b/Help/UGen/tGaussRand.help.lhs
deleted file mode 100644
--- a/Help/UGen/tGaussRand.help.lhs
+++ /dev/null
@@ -1,15 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> f_01 rand_f =
->     let t = dust 'α' KR 10
->         f = rand_f 'β' 300 3000 t
->         o = sinOsc AR f 0
->         l = rand_f 'γ' (-1) 1 t
->     in pan2 o l 0.1
-
-> g_01 = f_01 X.tGaussRand
-
-compare to tRand
-
-> g_02 = f_01 tRand
diff --git a/Help/UGen/tGrains.help.lhs b/Help/UGen/tGrains.help.lhs
deleted file mode 100644
--- a/Help/UGen/tGrains.help.lhs
+++ /dev/null
@@ -1,66 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Load audio (#10) data
-
-> f_01 = "/home/rohan/data/audio/pf-c5.aif"
-
-> m_01 = b_allocRead 10 f_01 0 0
-
-    > withSC3 (async m_01)
-
-Mouse control
-
-> g_01 =
->     let tRate = mouseY KR 2 200 Exponential 0.1
->         ctr = mouseX KR 0 (bufDur KR 10) Linear 0.1
->         tr = impulse AR tRate 0
->     in tGrains 2 tr 10 1 ctr (4 / tRate) 0 0.25 2
-
-> g_02 =
->     let b = 10
->         rt = mouseY KR 8 120 Exponential 0.1
->         dur = 4 / rt
->         clk = dust 'α' AR rt
->         r = tRand 'β' 0 0.01 clk
->         pan = whiteNoise 'γ' KR * 0.6
->         x = mouseX KR 0 (bufDur KR b) Linear 0.1
->         pos = x + r
->     in tGrains 2 clk b 1 pos dur pan 0.25 2
-
-> g_03 =
->     let b = 10
->         rt = mouseY KR 2 120 Exponential 0.1
->         dur = 1.2 / rt
->         clk = impulse AR rt 0
->         pos = mouseX KR 0 (bufDur KR b) Linear 0.1
->         n0 = whiteNoise 'α' KR
->         n1 = whiteNoise 'β' KR
->         rate = shiftLeft 1.2 (roundTo (n0 * 3) 1)
->     in tGrains 2 clk b rate pos dur (n1 * 0.6) 0.25 2
-
-Demand UGens as inputs (may eventually hang scsynth?)
-
-> g_04 =
->     let b = 10
->         rt = mouseY KR 2 100 Linear 0.2
->         d e = dwhite e 1 0.1 0.2
->         z e0 e1 = drand e0 1 (mce [dgeom e0 (diwhite e0 1 20 40) 0.1 (1 + d e0)
->                                   ,dgeom e1 (diwhite e1 1 20 40) 1 (1 - d e1)])
->         clk = impulse AR rt 0
->         dsq e xs = dseq e dinf (mce xs)
->         rate = dsq 'α' [1,1,z 'β' 'γ',0.5,0.5,0.2,0.1,0.1,0.1,0.1] * 2 + 1
->         pos = dsq 'δ' (take 8 (zipWith z ['ε'..] ['ζ'..]))
->         dur = dsq 'η' [1,d 'θ',1,z 'ι' 'κ',0.5,0.5,0.1,z 'λ' 'μ'] * 2 / rt
->         pan = dsq 'ν' [1,1,1,0.5,0.2,0.1,0,0,0] * 2 - 1
->         amp = dsq 'ξ' [1,0,z 'ο' 'π',0,2,1,1,0.1,0.1]
->     in tGrains 2 clk b rate pos dur pan amp 2
-
-http://sc-users.bham.ac.narkive.com/sj4Tw3ub/sync-osc#post5
-
-> g_05 =
->   let b = 10
->       freq = 100
->       dur = 2 / freq
->       clk = impulse AR freq 0
->       x = mouseX KR 0.5 16 Exponential 0.2
->   in tGrains 2 clk b x (0.3 * bufDur KR b) dur 0 0.1 2
diff --git a/Help/UGen/tRand.help.lhs b/Help/UGen/tRand.help.lhs
deleted file mode 100644
--- a/Help/UGen/tRand.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let t = dust 'α' KR (mce2 5 12)
->         f = tRand 'β' (mce2 200 1600) (mce2 500 3000) t
->     in sinOsc AR f 0 * 0.2
-
-> g_02_m = do
->   t <- dustM KR (mce2 5 12)
->   f <- tRandM (mce2 200 1600) (mce2 500 3000) t
->   return (sinOsc AR f 0 * 0.2)
-
-> g_02 = uid_st_eval g_02_m
diff --git a/Help/UGen/tWindex.help.lhs b/Help/UGen/tWindex.help.lhs
deleted file mode 100644
--- a/Help/UGen/tWindex.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let p = mce [1/5, 2/5, 2/5]
->         a = mce [400, 500, 600]
->         t = impulse KR 6 0
->         i = tWindex 'α' t 0 p
->     in sinOsc AR (select i  a) 0 * 0.1
-
-Modulating probability values
-
-> g_02 =
->     let p = mce [1/4, 1/2, sinOsc KR 0.3 0 * 0.5 + 0.5]
->         a = mce [400, 500, 600]
->         t = impulse KR 6 0
->         i = tWindex 'α' t 1 p
->     in sinOsc AR (select i a) 0 * 0.1
diff --git a/Help/UGen/tanh.help.lhs b/Help/UGen/tanh.help.lhs
deleted file mode 100644
--- a/Help/UGen/tanh.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let e = xLine KR 0.1 10 10 DoNothing
->         o = fSinOsc AR 500 0.0
->     in tanh (o * e) * 0.25
diff --git a/Help/UGen/tartini.help.lhs b/Help/UGen/tartini.help.lhs
deleted file mode 100644
--- a/Help/UGen/tartini.help.lhs
+++ /dev/null
@@ -1,33 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-Comparison of input frequency (x) and tracked oscillator frequency (f).
-
-> g_01 =
->   let x = mouseX KR 440 880 Exponential 0.1
->       o = lfSaw AR x 0 * 0.05 {- sinOsc AR x 0 * 0.1 -}
->       [f,_e] = mceChannels (X.tartini KR o 0.2 2048 0 1024 0.5)
->       r = sinOsc AR f 0 * 0.1
->       t = impulse KR 4 0
->       pf = poll t f 0 (label "f")
->       px = poll t x 0 (label "x")
->   in mrg [out 0 (mce2 o r),pf,px]
-
-Fast test of live pitch tracking, not careful with amplitude of input
-
-> g_02 =
->   let z = hpf (soundIn 0) 90
->       [f,e] = mceChannels (X.tartini KR z 0.2 2048 0 1024 0.5)
->   in mce2 (z * 0.1) (lfTri AR f 0 * 0.2 * lag e 0.2 * lag (f >** 90 * f <** 500) 0.2)
-
-Printer for pitch tracker
-
-> g_03 =
->   let i = soundIn 0
->       [f,_e] = mceChannels (X.tartini KR i 0.2 2048 0 1024 0.5)
->       r = sinOsc AR f 0 * 0.1
->       t = impulse KR 4 0
->       pf = poll t f 0 (label "f")
->   in mrg [out 0 (mce2 i r),pf]
-
-ZELL = C4 - C5 = 247 259 277 295 309 331 345 369 387 415 441 462 493 (hz)
diff --git a/Help/UGen/thresh.help.lhs b/Help/UGen/thresh.help.lhs
deleted file mode 100644
--- a/Help/UGen/thresh.help.lhs
+++ /dev/null
@@ -1,5 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-low-rent gate
-
-> g_01 = let n = lfNoise0 'α' AR 50 * 0.5 in thresh n 0.45
diff --git a/Help/UGen/tiRand.help.lhs b/Help/UGen/tiRand.help.lhs
deleted file mode 100644
--- a/Help/UGen/tiRand.help.lhs
+++ /dev/null
@@ -1,17 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_00 =
->   let l = tiRand 'α' (-1) 1 (dust 'β' KR 10)
->   in pan2 (pinkNoise 'γ' AR * 0.1) l 1
-
-> g_01 :: UId m => m UGen
-> g_01 = do
->   l <- tiRandM (-1) 1 =<< dustM KR 10
->   n <- pinkNoiseM AR
->   return (pan2 (n * 0.1) l 1)
-
-> g_02 :: UId m => m UGen
-> g_02 = do
->   n <- tiRandM 4 12 =<< dustM KR 10
->   let f = n * 150 + (mce [0,1])
->   return (sinOsc AR f 0 * 0.1)
diff --git a/Help/UGen/timer.help.lhs b/Help/UGen/timer.help.lhs
deleted file mode 100644
--- a/Help/UGen/timer.help.lhs
+++ /dev/null
@@ -1,5 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let t = impulse KR (mouseX KR 0.5 20 Exponential 0.1) 0
->     in sinOsc AR (timer t * 500 + 500) 0 * 0.2
diff --git a/Help/UGen/toggleFF.help.lhs b/Help/UGen/toggleFF.help.lhs
deleted file mode 100644
--- a/Help/UGen/toggleFF.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let tr = dust 'α' AR (xLine KR 1 1000 60 DoNothing)
->         fr = toggleFF tr * 400 + 800
->     in sinOsc AR fr 0 * 0.1
diff --git a/Help/UGen/trig.help.lhs b/Help/UGen/trig.help.lhs
deleted file mode 100644
--- a/Help/UGen/trig.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let d = dust 'α' AR 1
->         o = fSinOsc AR 800 0 * 0.5
->     in o * trig d 0.2
diff --git a/Help/UGen/trig1.help.lhs b/Help/UGen/trig1.help.lhs
deleted file mode 100644
--- a/Help/UGen/trig1.help.lhs
+++ /dev/null
@@ -1,8 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let d = dust 'α' AR 1
->         o = fSinOsc AR 800 0 * 0.2
->     in o * trig1 d 0.2
-
-> g_02 = sinOsc AR 440 0 * trig1 (impulse KR 10 0) 0.1 * 0.25
diff --git a/Help/UGen/trigControl.help.lhs b/Help/UGen/trigControl.help.lhs
deleted file mode 100644
--- a/Help/UGen/trigControl.help.lhs
+++ /dev/null
@@ -1,38 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Graph with the three types of non-audio controls.
-
-> g_01 =
->     let freq = control KR "freq" 440
->         phase = control IR "phase" 0
->         gate' = tr_control "gate" 1
->         amp = control KR "amp" 0.1
->         e = envGen KR gate' amp 0 1 DoNothing (envASR 0.01 0.1 1 EnvLin)
->     in sinOsc AR freq phase * e
-
-Make a graph drawing
-
-    > import Sound.SC3.UGen.Dot {- hsc3-ugen -}
-    > draw (out 0 g_01)
-
-Listen
-
-    > audition_at (10,AddToHead,1,[]) (out 0 g_01)
-
-Set frequency and the trigger gate.
-
-    > import Sound.OSC {- hosc -}
-    > withSC3 (sendMessage (n_set1 10 "freq" 2200))
-    > withSC3 (sendMessage (n_set1 10 "gate" 1))
-
-Make a control rate graph to write freq and gate values.
-
-> g_02 = mce2 (tRand 'α' 220 2200 (dust 'β' KR 1)) (dust 'γ' KR 3)
-
-Add it _before_ the node it will map to, the trigger is only on the bus for the current cycle.
-
-    > audition_at (-1,AddBefore,10,[]) (out 0 g_02)
-
-Map the control values at the audio graph.
-
-    > withSC3 (sendMessage (n_map 10 [("freq",0),("gate",1)]))
diff --git a/Help/UGen/twChoose.help.lhs b/Help/UGen/twChoose.help.lhs
deleted file mode 100644
--- a/Help/UGen/twChoose.help.lhs
+++ /dev/null
@@ -1,13 +0,0 @@
-tWChoose is a composite of tWindex and select
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let x = mouseX KR 1 1000 Exponential 0.1
->         d = dust 'α' AR x
->         a = mce [sinOsc AR 220 0
->                 ,saw AR 440
->                 ,pulse AR 110 0.1]
->         w = mce [0.5, 0.35, 0.15]
->         o = tWChoose 'β' d a w 0
->     in o * 0.1
diff --git a/Help/UGen/twoPole.help.lhs b/Help/UGen/twoPole.help.lhs
deleted file mode 100644
--- a/Help/UGen/twoPole.help.lhs
+++ /dev/null
@@ -1,10 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = whiteNoise 'α' AR
->     in twoPole (n * 0.005) 2000 0.95
-
-> g_02 =
->     let n = whiteNoise 'α' AR
->         f = xLine KR 800 8000 8 RemoveSynth
->     in twoPole (n * 0.005) f 0.95
diff --git a/Help/UGen/twoTube.help.lhs b/Help/UGen/twoTube.help.lhs
deleted file mode 100644
--- a/Help/UGen/twoTube.help.lhs
+++ /dev/null
@@ -1,11 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_01 =
->   let dly1 = 100
->       dly2 = 40
->       env = envelope [1,1,0] [(dly1 + dly2) / sampleRate,0.0] [EnvLin]
->       x = mouseX KR (-1) 1 Linear 0.2
->       y = mouseY KR 1 4 Linear 0.2
->       src = whiteNoise 'α' AR * 0.5 * envGen AR (impulse KR y 0) 1 0 1 DoNothing env
->   in X.twoTube AR src x 0.99 dly1 dly2
diff --git a/Help/UGen/twoZero.help.lhs b/Help/UGen/twoZero.help.lhs
deleted file mode 100644
--- a/Help/UGen/twoZero.help.lhs
+++ /dev/null
@@ -1,6 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let n = whiteNoise 'α' AR
->         f = xLine KR 20 20000 8 RemoveSynth
->     in twoZero (n * 0.125) f 1
diff --git a/Help/UGen/vDiskIn.help.lhs b/Help/UGen/vDiskIn.help.lhs
deleted file mode 100644
--- a/Help/UGen/vDiskIn.help.lhs
+++ /dev/null
@@ -1,12 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> fn_01 = "/home/rohan/data/audio/pf-c5.snd"
-> nc_01 = 1
-> msg_01 = [b_alloc 0 8192 nc_01,b_read 0 fn_01 0 (-1) 0 True]
-> msg_02 = [b_close 0,b_free 0]
-
-    > withSC3 (mapM_ async msg_01)
-
-> g_01 = vDiskIn nc_01 0 (sinOsc KR 0.25 0 * 0.25 + 1) Loop 0
-
-    > withSC3 (mapM_ async msg_02)
diff --git a/Help/UGen/vOsc.help.lhs b/Help/UGen/vOsc.help.lhs
deleted file mode 100644
--- a/Help/UGen/vOsc.help.lhs
+++ /dev/null
@@ -1,35 +0,0 @@
-> import Sound.OSC {- hosc -}
-> import Sound.SC3 {- hsc3 -}
-
-Allocate and fill tables 0 to 7.
-
-> b_flags = [Normalise,Wavetable,Clear]
-> gen_harm i =
->     let square a = a * a
->         n = square (fromIntegral i + 1)
->         f j = square ((n - j) / n)
->     in map f [0 .. n - 1]
-> gen_setup i = (b_alloc i 1024 1,b_gen_sine1 i b_flags (gen_harm i))
-> run_setup (p,q) = (async p >> sendMessage q)
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plotImpulses [gen_harm 7]
-    withSC3 (mapM_ (run_setup . gen_setup) [0 .. 7])
-
-Oscillator at buffers 0 through 7, mouse selects buffer.
-
-> f_01 k n =
->     let x = mouseX KR k (k + n - 1) Linear 0.1
->         y = mouseY KR 0.01 0.2 Exponential 0.2
->     in vOsc AR x (mce [120, 121]) 0 * y
-
-> g_01 = f_01 0 8
-
-    > audition (f_01 0 24)
-
-Reallocate buffers while oscillator is running.
-
-    > import Sound.SC3.Lang.Random.IO {- hsc3-lang -}
-    >
-    > resetTable i = do {h <- nrrand 12 0 1;sendMessage (b_gen_sine1 i b_flags h)}
-    > withSC3 (mapM_ resetTable [0 .. 7])
diff --git a/Help/UGen/vOsc3.help.lhs b/Help/UGen/vOsc3.help.lhs
deleted file mode 100644
--- a/Help/UGen/vOsc3.help.lhs
+++ /dev/null
@@ -1,18 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-see vOsc help for code to allocate and fill tables 0 to 7...
-
-oscillator at buffers 0 through 7, mouse selects buffer.
-
-> f_01 k0 kN =
->     let x = mouseX KR k0 (k0 + kN - 1) Linear 0.1
->         y = mouseY KR 0.01 0.2 Exponential 0.2
->         o1 = vOsc3 AR x 120 121 129
->         o2 = vOsc3 AR x 119 123 127
->     in mce2 o1 o2 * y
-
-> g_01 = f_01 0 8
-
-  let k = 0 in audition (f_01 k 24)
-  audition (f_01 0 102)
-  audition (f_01 19 31)
diff --git a/Help/UGen/varLag.help.lhs b/Help/UGen/varLag.help.lhs
deleted file mode 100644
--- a/Help/UGen/varLag.help.lhs
+++ /dev/null
@@ -1,49 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-The implemented varLag UGen has five inputs: (input, lagTime, curvature, warp, start)
-
-> g_00 = varLag (lfPulse AR 50 0 0.5) (mouseX KR 0.0 (1/50) Linear 0.2) 0 5 0 * 0.2
-
-> g_01 = varLag (impulse AR 50 0) (mouseX KR 0.0 (1/50) Linear 0.2) 0 5 0 * 0.2
-
-The varLag_env composite UGen has various odd behaviours
-
-> f_01 f = sinOsc AR (f (exprange 200 400 (lfNoise1 'α' KR 5)) 0.1) 0 * 0.2
-
-> g_02 = f_01 lag
-
-> g_03 = f_01 (\s t -> varLag_env s t (EnvNum 0) s)
-
-> f_02 f =
->     let x = mouseX KR 220 440 Linear 0.2
->     in sinOsc AR (mce [x, f x 1]) 0 * 0.1
-
-> g_04 = f_02 lag
-
-> g_05 = f_02 (\s t -> varLag_env s t (EnvNum 0) s)
-
-> g_06 =
->   let fr = range 100 400 (lfPulse KR 1 0 0.5) -- frequency modulator
->       sh = line KR (-8) 8 15 RemoveSynth -- modulate shape
->       fr_lag = varLag_env fr 0.2 (EnvNum sh) 0 -- lag the modulator
->   in sinOsc AR fr_lag 0 * 0.3
-
-as signal filter (step behaviour is wrong?)
-
-> f_03 s =
->   let x = mouseX KR 0.0001 0.01 Exponential 0.2
->   in varLag s x 0 5 s
-
-> g_07 = f_03 (0 - saw AR 440) * 0.15
-> g_08 = f_03 (impulse AR (range 6 24 (lfNoise2 'γ' KR 4)) 0) * 0.5
-
-> g_09 =
->   let s = varSaw AR 220 0 (range 0 1 (sinOsc KR 0.25 0))
->   in f_03 s * 0.1
-
-used to lag pitch
-
-> g_10 =
->   let f1 = range 100 400 (lfPulse KR 1 0 0.5)
->       f2 = varLag f1 0.2 (line KR (-8) 8 15 RemoveSynth) 5 0
->   in sinOsc AR f2 0 * 0.3
diff --git a/Help/UGen/varSaw.help.lhs b/Help/UGen/varSaw.help.lhs
deleted file mode 100644
--- a/Help/UGen/varSaw.help.lhs
+++ /dev/null
@@ -1,58 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_00 =
->   let x = mouseX KR 0 1 Linear 0.2
->   in varSaw AR 220 0 x * 0.1
-
-> g_01 =
->     let f = lfPulse KR (mce2 3 3.03) 0 0.3 * 200 + 200
->         w = linLin (lfTri KR 1 0) (-1) 1 0 1
->     in varSaw AR f 0 w * 0.1
-
-Compare with lfPulse at AR
-
-> g_02 =
->     let f = lfPulse KR 3 0 0.3 * 200 + 200
->     in mce [varSaw AR f 0 0.2
->            ,lfPulse AR f 0 0.2] * 0.1
-
-per-note width modulation
-
-> g_03 =
->     let d = linLin (lfNoise2 'α' KR 0.1) (-1) 1 0.15 0.5
->         t = impulse AR (1 / d) 0
->         w0 = tRand 'β' 0 0.35 t
->         w1 = tRand 'γ' 0.65 1 t
->         w = phasor AR t ((w1 - w0) * sampleDur) w0 w1 0
->         e = decay2 t 0.1 d
->         f = midiCPS (tRand 'δ' 36 72 t)
->         o = varSaw AR f 0 w * e * 0.1
->         l = tRand 'ε' (-1) 1 t
->     in pan2 o l 1
-
-http://sc-users.bham.ac.narkive.com/sj4Tw3ub/sync-osc#post6
-
-> g_04 =
->   let freq = control KR "freq" 110
->       factor = control KR "factor" 1
->       x = mouseX KR 0 1.0 Linear 0.2
->       y = mouseY KR (mce2 23 17) 0 Linear 0.2
->       ph = varSaw AR (freq * factor) 0 x * y
->   in sinOsc AR (freq * mce2 1.001 1) ph * 0.2
-
-    > import Sound.OSC {- hosc -}
-    > set_factor n = withSC3 (sendMessage (n_set1 (-1) "factor" n))
-    > set_factor 0.125 {- 0.125 0.5 1.3 1.5 23.0 -}
-
-slow indeterminate modulation of width, <http://sccode.org/1-5as>
-
-> g_05 =
->   let midinote = 60
->       gate_ = 1
->       amp = 0.25
->       asr = envASR 0.1 1 0.1 (EnvNum (-4))
-> 	env = envGen KR gate_ 1 0 1 RemoveSynth asr
->       freq = midiCPS midinote
->       width = range 0.2 0.8 (lfNoise2 'β' KR 1) *
->               range 0.7 0.8 (sinOsc KR 5 (rand 'α' 0.0 1.0))
->   in varSaw AR freq 0 width * env * amp
diff --git a/Help/UGen/vibrato.help.lhs b/Help/UGen/vibrato.help.lhs
deleted file mode 100644
--- a/Help/UGen/vibrato.help.lhs
+++ /dev/null
@@ -1,45 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-vibrato at 1 Hz, note the use of DC.ar
-
-    {SinOsc.ar(Vibrato.ar(DC.ar(400.0),1,0.02))*0.1}.play
-
-> g_01 =
->     let v = vibrato 'α' AR (dc AR 400) 1 0.02 0 0 0.04 0.1 0 0
->     in sinOsc AR v 0 * 0.1
-
-compare: k-rate freq input can be a constant
-
-    {SinOsc.ar(Vibrato.kr(400.0,1,0.02))}.play
-
-> g_02 =
->     let v = vibrato 'α' KR 400 1 0.02 0 0 0.04 0.1 0 0
->     in sinOsc AR v 0 * 0.1
-
-control rate and rateVariation
-
-    {x=MouseX.kr(2.0,100.0)
-    ;y=MouseY.kr(0.0,1.0)
-    ;v=Vibrato.ar(DC.ar(400.0),x,0.1,1.0,1.0,y,0.1)
-    ;SinOsc.ar(v)}.play
-
-> g_03 =
->     let x = mouseX KR 2 100 Linear 0.2
->         y = mouseY KR 0 1 Linear 0.2
->         v = vibrato 'α' AR (dc AR 400) x 0.1 1 1 y 0.1 0 0
->     in sinOsc AR v 0 * 0.1
-
-control depth and depthVariation
-
-    {n=LFNoise1.kr(1,3,7)
-    ;x=MouseX.kr(0.0,1.0)
-    ;y=MouseY.kr(0.0,1.0)
-    ;v=Vibrato.ar(DC.ar(400.0),n,x,1.0,1.0,y,0.1)
-    ;SinOsc.ar(v)}.play
-
-> g_04 =
->     let n = lfNoise1 'α' KR 1 * 3 + 7
->         x = mouseX KR 0 1 Linear 0.2
->         y = mouseY KR 0 1 Linear 0.2
->         v = vibrato 'β' AR (dc AR 400) n x 1 1 y 0.1 0 0
->     in sinOsc AR v 0 * 0.1
diff --git a/Help/UGen/vosim.help.lhs b/Help/UGen/vosim.help.lhs
deleted file mode 100644
--- a/Help/UGen/vosim.help.lhs
+++ /dev/null
@@ -1,28 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.DB.External as X {- hsc3 -}
-
-> g_00 =
->     let trg = impulse AR 100 0
->         frq = mouseX KR 440 880 Exponential 0.2
->         n_cycles = 3
->         dcy = 0.1
->     in X.vosim AR trg frq n_cycles dcy * 0.25
-
-> g_01 =
->     let p = tRand 'α' 0 1 (impulse AR 6 0)
->         t = impulse AR (9 * ( 1 + ( p >** 0.95))) 0
->         x = mouseX KR 0.25 2 Linear 0.2
->         y = mouseY KR 0.25 0.75 Linear 0.2
->         z = 9
->         rng i = linLin i (-1) 1
->         mk_n e = rng (lfNoise2 e KR z) 0.25 2
->         tR e ll rl = tRand e (mce ll) (mce rl)
->         f = tR 'β' [40,120,220] [440,990,880] t
->         n = tR 'γ' [4] [8,16,32] t
->         d = tR 'δ' [0.2,0.4,0.6] [0.6,0.8,1] t
->         a = tR 'ε' [0] [0.05,0.15,0.25] t
->         l = tR 'ζ' [-1] [1] t
->         xn = mk_n 'η'
->         yn = mk_n 'θ'
->         v = X.vosim AR t (f * x * xn) n (d * y * yn) * a
->     in pan2 (mix v) l 1
diff --git a/Help/UGen/warp1.help.lhs b/Help/UGen/warp1.help.lhs
deleted file mode 100644
--- a/Help/UGen/warp1.help.lhs
+++ /dev/null
@@ -1,28 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> fn_01 = "/home/rohan/data/audio/pf-c5.aif"
-
-> m_01 = b_allocRead 10 fn_01 0 0
-
-    withSC3 (async m_01)
-
-> g_01 =
->     let p = linLin (lfSaw KR 0.05 0) (-1) 1 0 1
->         x = mouseX KR 0.5 2 Linear 0.1
->     in warp1 1 10 p x 0.1 (-1) 8 0.1 2
-
-real-time (delayed) input
-
-> m_02 = b_alloc 10 8192 1
-
-    withSC3 (async m_02)
-
-> g_02 =
->     let i = soundIn 0
->         r = recordBuf AR 10 0 1 0 1 Loop 1 DoNothing i
->         ph = (8192 / sampleRate) * 2 * pi
->         p = lfSaw KR (1 / bufDur KR 10) ph * 0.5 + 0.5
->         x = mouseX KR 0.5 2 Linear 0.2
->         y = mouseY KR 0.01 0.2 Linear 0.2
->         w = warp1 1 10 p x 0.1 (-1) 8 y 4
->     in mrg2 (i + w) r
diff --git a/Help/UGen/waveTerrain.help.lhs b/Help/UGen/waveTerrain.help.lhs
--- a/Help/UGen/waveTerrain.help.lhs
+++ b/Help/UGen/waveTerrain.help.lhs
@@ -31,7 +31,7 @@
 
 Confirm table
 
-    plotTable [tbl']
+    plot_p1_ln [tbl']
 
 Send table to scsynth
 
diff --git a/Help/UGen/whiteNoise.help.lhs b/Help/UGen/whiteNoise.help.lhs
deleted file mode 100644
--- a/Help/UGen/whiteNoise.help.lhs
+++ /dev/null
@@ -1,66 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_00 = let n = whiteNoise 'α' AR * 0.05 in mce2 n n
-
-> g_01_m = fmap (* 0.05) (whiteNoiseM AR)
-
-> g_01 = uid_st_eval g_01_m
-
-Random filtered noise bursts.
-
-> g_02 =
->     let n = whiteNoise 'α' AR
->         t = dust 'β' AR (mce [3, 7])
->         f = tExpRand 'γ' 20 1800 t
->         bw = tExpRand 'δ' 0.001 1 t
->         e = decay2 t 0.01 0.2
->     in resonz (n * e) f bw
-
-Monadic form of above graph.
-
-> g_03_m = do
->   n <- whiteNoiseM AR
->   t <- dustM AR (mce [3, 7])
->   f <- tExpRandM 20 1800 t
->   bw <- tExpRandM 0.001 1 t
->   let e = decay2 t 0.01 0.2
->   return (resonz (n * e) f bw)
-
-> g_03 = uid_st_eval g_03_m
-
-The same graph again, without using do notation.
-
-> g_04_m =
->     whiteNoiseM AR >>= \n ->
->     dustM AR (mce [3, 7]) >>= \t ->
->     tExpRandM 20 1800 t >>= \f ->
->     tExpRandM 0.001 1 t >>= \bw ->
->     let e = decay2 t 0.01 0.2
->     in return (resonz (n * e) f bw)
-
-> g_04 = uid_st_eval g_04_m
-
-Drawing
-
-    import Sound.SC3.Plot {- hsc3-plot -}
-    plot_ugen1 0.01 (whiteNoise 'γ' AR)
-    plot_ugen1 0.05 (lpf (whiteNoise 'γ' AR) 500)
-
-    import Sound.SC3.Plot.FFT {- hsc3-plot -}
-    plot_ugen_fft1 0.1 (whiteNoise 'α' AR)
-
-![](sw/hsc3/Help/SVG/whiteNoise.0.svg)
-![](sw/hsc3/Help/SVG/whiteNoise.1.svg)
-![](sw/hsc3/Help/SVG/whiteNoise.2.svg)
-
-Speaker balance
-
-> g_05 = let n = whiteNoise 'α' AR * 0.1 in mce2 n n
-
-> g_06 =
->     let x = mouseX KR 0.1 2 Linear 0.2
->         l = sinOsc KR x 0
->         n = whiteNoise 'α' AR
->     in pan2 n l 0.1
-
-> g_07 = hpz1 (whiteNoise 'α' AR * 0.01)
diff --git a/Help/UGen/wrapIndex.help.lhs b/Help/UGen/wrapIndex.help.lhs
deleted file mode 100644
--- a/Help/UGen/wrapIndex.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let b = asLocalBuf 'α' [200,300,400,500,600,800]
->         x = mouseX KR 0 18 Linear 0.1
->         f = wrapIndex b x
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/xFade2.help.lhs b/Help/UGen/xFade2.help.lhs
deleted file mode 100644
--- a/Help/UGen/xFade2.help.lhs
+++ /dev/null
@@ -1,3 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 = xFade2 (saw AR 440) (sinOsc AR 440 0) (lfTri KR 0.1 0) 0.1
diff --git a/Help/UGen/xLine.help.lhs b/Help/UGen/xLine.help.lhs
deleted file mode 100644
--- a/Help/UGen/xLine.help.lhs
+++ /dev/null
@@ -1,7 +0,0 @@
-Note: SC3 reorders mul and add inputs to precede the doneAction input.
-
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let f = xLine KR 200 17000 10 RemoveSynth
->     in sinOsc AR f 0 * 0.1
diff --git a/Help/UGen/xOut.help.lhs b/Help/UGen/xOut.help.lhs
deleted file mode 100644
--- a/Help/UGen/xOut.help.lhs
+++ /dev/null
@@ -1,14 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-Send signal to a bus, crossfading with existing contents.
-
-> g_01 =
->     let p a b = sinOsc AR (mce2 a b) 0 * 0.1
->         x = mouseX KR 0 1 Linear 0.1
->         y = mouseY KR 0 1 Linear 0.1
->     in mrg [out  0   (p 220 221)
->            ,xOut 0 x (p 330 331)
->            ,xOut 0 y (p 440 441)
->            ,out  0   (p 120 121)]
-
-out is a summing output, see replaceOut for over-writing output.
diff --git a/Help/UGen/zeroCrossing.help.lhs b/Help/UGen/zeroCrossing.help.lhs
deleted file mode 100644
--- a/Help/UGen/zeroCrossing.help.lhs
+++ /dev/null
@@ -1,9 +0,0 @@
-> import Sound.SC3 {- hsc3 -}
-
-> g_01 =
->     let a = sinOsc AR (sinOsc KR 1 0 * 600 + 700) 0 * 0.1
->     in mce [a, impulse AR (zeroCrossing a) 0 * 0.25]
-
-> g_02 =
->     let a = soundIn 0
->     in mce [a, sinOsc AR (zeroCrossing a) 0 * 0.1]
diff --git a/Help/UGen/zitaRev.help.lhs b/Help/UGen/zitaRev.help.lhs
deleted file mode 100644
--- a/Help/UGen/zitaRev.help.lhs
+++ /dev/null
@@ -1,49 +0,0 @@
-<http://kokkinizita.linuxaudio.org/linuxaudio/zita-rev1-doc/quickguide.html>
-
-> import Sound.SC3 {- hsc3 -}
-> import qualified Sound.SC3.UGen.Bindings.HW.External.X as X {- hsc3 -}
-
-    > X.zitaRev_param
-
-mostly default settings
-
-> g_01 =
->     let i = soundIn 0
->         in_delay = 60
->         eq1_freq = 315
->         eq2_freq = 1500
->         dry_wet_mix = 0.5
->         level = 0
->     in X.zitaRev i i in_delay 200 3 2 6000 eq1_freq 0 eq2_freq 0 dry_wet_mix level
-
-longer
-
-> g_02 =
->     let i = soundIn 0
->         in_delay = 80
->         low_rt60 = 6
->         mid_rt60 = 4
->         eq1_freq = 190
->         eq1_level = -6
->         eq2_freq = 3500
->         eq2_level = 6
->         dry_wet_mix = 0
->         level = 0
->     in X.zitaRev i i in_delay 200 low_rt60 mid_rt60 6000 eq1_freq eq1_level eq2_freq eq2_level dry_wet_mix level
-
-longer still
-
-> g_03 =
->     let i = soundIn 0
->         in_delay = 100
->         low_rt60 = 6
->         mid_rt60 = 8
->         eq1_freq = 190
->         eq1_level = -6
->         eq2_freq = 3500
->         eq2_level = 6
->         dry_wet_mix = 0.5
->         level = 0.0
->     in X.zitaRev i i in_delay 200 low_rt60 mid_rt60 6000 eq1_freq eq1_level eq2_freq eq2_level dry_wet_mix level
-
-
diff --git a/README b/README
deleted file mode 100644
--- a/README
+++ /dev/null
@@ -1,81 +0,0 @@
-hsc3 - haskell supercollider
-----------------------------
-
-[hsc3](http://rohandrape.net/?t=hsc3)
-provides `Sound.SC3`, a module for using
-[Haskell](http://haskell.org/)
-as a client to the
-[SuperCollider](http://audiosynth.com/)
-synthesis server.
-hsc3 requires
-[hosc](http://rohandrape.net/?t=hosc).
-
-There is an
-[introduction](http://rohandrape.net/?t=hsc3-texts&e=lhs/hsc3-introduction.lhs)
-and a
-[tutorial](http://rohandrape.net/?t=hsc3-texts&e=lhs/hsc3-tutorial.lhs)
-at
-[hsc3-texts](http://rohandrape.net/?t=hsc3-texts).
-
-There are a number of related projects:
-
-- [hsc3-dot](?t=hsc3-dot): UGen graph drawing (2006)
-- [hsc3-graphs](?t=hsc3-graphs): UGen graph collection (2006)
-- [hsc3-db](?t=hsc3-db): UGen Database (2006)
-- [hsc3-sf](?t=hsc3-sf): Sound file IO (2006)
-- [hsc3-unsafe](?t=hsc3-unsafe): Unsafe UGen variants (2006)
-- [hsc3-lang](?t=hsc3-lang): SC3 language (2007)
-- [hsc3-rec](?t=hsc3-rec): Record UGens (2008)
-- [hsc3-sf-hsndfile](?t=hsc3-sf-hsndfile): Sound file IO (libsndfile) (2010)
-- [hsc3-auditor](?t=hsc3-auditor): Simple-minded auditioner (2010)
-- [hsc3-cairo](?t=hsc3-cairo): Drawing (2012)
-- [hsc3-plot](?t=hsc3-plot): Plotting (2013)
-- [hsc3-data](?t=hsc3-data): Data formats &etc. (2013)
-- [hsc3-rw](?t=hsc3-rw): UGen Graph Re-writing (2013)
-- [hsc3-forth](?t=hsc3-forth): FORTH SuperCollider (2014)
-- [hsc3-lisp](?t=hsc3-lisp): LISP SuperCollider (2014)
-- [hsc3-m](?t=hsc3-m): UGen variants (2018)
-
-The hsc3 interaction environment ([hsc3.el](?t=hsc3&e=emacs/hsc3.el))
-is written for
-[GNU](http://gnu.org/)
-[Emacs](http://gnu.org/software/emacs/).
-
-<!--
-There is also, more obliquely related:
-
-- [sc3-rdu](?t=sc3-rdu): SuperCollider UGens (1998)
-- [rsc3](?t=rsc3): Scheme SuperCollider (2004)
-- [smlsc3](?t=smlsc3): Standard ML SuperCollider (2008)
--->
-
-## cli
-
-[scsynth](?t=hsc3&e=md/scsynth.md),
-[setup](?t=hsc3&e=md/setup.md)
-
-## help
-
-[UGen Index](?t=hsc3&e=Help/UGen/ix.md)
-
-©
-[rohan drape](http://rohandrape.net/)
-and others, 2005-2020,
-[gpl](http://gnu.org/copyleft/)
-
-with contributions by:
-
-- henning thielemann
-- stefan kersten
-- alex mclean
-- brent yorgey
-- shae erisson
-
-see the
-[git](https://git-scm.com/)
-[history](?t=hsc3&q=history)
-for details
-
-initial announcement:
-[[2005-11-29/haskell-cafe](?t=hsc3&e=md/announce.text),
- [haskell.org](http://www.haskell.org/pipermail/haskell-cafe/2005-November/012483.html)]
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,83 @@
+hsc3 - haskell supercollider
+----------------------------
+
+[hsc3](http://rohandrape.net/?t=hsc3)
+provides `Sound.SC3`, a module for using
+[Haskell](http://haskell.org/)
+as a client to the
+[SuperCollider](http://audiosynth.com/)
+synthesis server.
+hsc3 requires
+[hosc](http://rohandrape.net/?t=hosc).
+
+There is an
+[introduction](http://rohandrape.net/?t=hsc3-texts&e=lhs/hsc3-introduction.lhs)
+and a
+[tutorial](http://rohandrape.net/?t=hsc3-texts&e=lhs/hsc3-tutorial.lhs)
+at
+[hsc3-texts](http://rohandrape.net/?t=hsc3-texts).
+
+There are a number of related projects:
+
+- [sc3-rdu](http://rohandrape.net/?t=sc3-rdu): SuperCollider UGens (1998)
+- [rsc3](http://rohandrape.net/?t=rsc3): Scheme SuperCollider (2004)
+- [hsc3-dot](http://rohandrape.net/?t=hsc3-dot): UGen graph drawing (2006)
+- [hsc3-graphs](http://rohandrape.net/?t=hsc3-graphs): UGen graph collection (2006)
+- [hsc3-db](http://rohandrape.net/?t=hsc3-db): UGen Database (2006)
+- [hsc3-sf](http://rohandrape.net/?t=hsc3-sf): Sound file IO (2006)
+- [hsc3-unsafe](http://rohandrape.net/?t=hsc3-unsafe): Unsafe UGen variants (2006)
+- [hsc3-lang](http://rohandrape.net/?t=hsc3-lang): SC3 language (2007)
+- [hsc3-rec](http://rohandrape.net/?t=hsc3-rec): Record UGens (2008)
+- [smlsc3](http://rohandrape.net/?t=smlsc3): Standard ML SuperCollider (2008)
+- [hsc3-sf-hsndfile](http://rohandrape.net/?t=hsc3-sf-hsndfile): Sound file IO (libsndfile) (2010)
+- [hsc3-auditor](http://rohandrape.net/?t=hsc3-auditor): Simple sound event auditioner (2010)
+- [hsc3-cairo](http://rohandrape.net/?t=hsc3-cairo): Drawing (2012)
+- [hsc3-plot](http://rohandrape.net/?t=hsc3-plot): Plotting (2013)
+- [hsc3-data](http://rohandrape.net/?t=hsc3-data): Data formats &etc. (2013)
+- [hsc3-rw](http://rohandrape.net/?t=hsc3-rw): UGen Graph Re-writing (2013)
+- [hsc3-forth](http://rohandrape.net/?t=hsc3-forth): FORTH SuperCollider (2014)
+- [hsc3-lisp](http://rohandrape.net/?t=hsc3-lisp): LISP SuperCollider (2014)
+- [hsc3-m](http://rohandrape.net/?t=hsc3-m): UGen variants (2018)
+- [stsc3](http://rohandrape.net/?t=stsc3): Smalltalk SuperCollider (2019)
+- [hsc3-util](http://rohandrape.net/?t=hsc3-util): hsc3 & related utilities (2020)
+
+The hsc3 interaction environment ([hsc3.el](http://rohandrape.net/?t=hsc3&e=emacs/hsc3.el))
+is written for
+[GNU](http://gnu.org/)
+[Emacs](http://gnu.org/software/emacs/).
+
+<!--
+There is also, more obliquely related:
+-->
+
+## cli
+
+[help](http://rohandrape.net/?t=hsc3&e=md/help.md),
+[scsynth](http://rohandrape.net/?t=hsc3&e=md/scsynth.md),
+[setup](http://rohandrape.net/?t=hsc3&e=md/setup.md)
+
+## help
+
+[UGen Index](http://rohandrape.net/?t=hsc3&e=Help/UGen/ix.md)
+
+©
+[rohan drape](http://rohandrape.net/)
+and others, 2005-2021,
+[gpl-3](http://gnu.org/copyleft/)
+
+with contributions by:
+
+- henning thielemann
+- stefan kersten
+- alex mclean
+- brent yorgey
+- shae erisson
+
+see the
+[git](https://git-scm.com/)
+[history](http://rohandrape.net/?t=hsc3&q=history)
+for details
+
+initial announcement:
+[[2005-11-29/haskell-cafe](http://rohandrape.net/?t=hsc3&e=md/announce.text),
+ [haskell.org](http://www.haskell.org/pipermail/haskell-cafe/2005-November/012483.html)]
diff --git a/Sound/SC3/Common.hs b/Sound/SC3/Common.hs
--- a/Sound/SC3/Common.hs
+++ b/Sound/SC3/Common.hs
@@ -4,8 +4,10 @@
 import Sound.SC3.Common.Buffer as M
 import Sound.SC3.Common.Enum as M
 import Sound.SC3.Common.Envelope as M
+import Sound.SC3.Common.Help as M
 import Sound.SC3.Common.Math as M
 import Sound.SC3.Common.Math.Operator as M
+import Sound.SC3.Common.Math.Warp as M
 import Sound.SC3.Common.Monad as M
 import Sound.SC3.Common.Rate as M
 import Sound.SC3.Common.UId as M
diff --git a/Sound/SC3/Common/Base.hs b/Sound/SC3/Common/Base.hs
--- a/Sound/SC3/Common/Base.hs
+++ b/Sound/SC3/Common/Base.hs
@@ -24,6 +24,13 @@
 -- | Quaternary function.
 type Fn4 a b c d e = a -> b -> c -> d -> e
 
+-- | Apply /f/ n times, ie. iterate f x !! n
+--
+-- > iter 3 (* 2) 1 == 8
+-- > iterate (* 2) 1 !! 3 == 8
+iter :: Int -> (a -> a) -> a -> a
+iter n f x = if n == 0 then x else f (iter (n - 1) f x)
+
 -- * Read
 
 -- | Variant of 'reads' requiring exact match.
@@ -212,6 +219,10 @@
 -- | [x,y] -> (x,y)
 t2_from_list :: [t] -> T2 t
 t2_from_list l = case l of {[p,q] -> (p,q);_ -> error "t2_from_list"}
+
+-- | [x,y,z] -> (x,y,z)
+t3_from_list :: [t] -> (t,t,t)
+t3_from_list l = case l of {[p,q,r] -> (p,q,r);_ -> error "t3_from_list"}
 
 -- * System
 
diff --git a/Sound/SC3/Common/Buffer.hs b/Sound/SC3/Common/Buffer.hs
--- a/Sound/SC3/Common/Buffer.hs
+++ b/Sound/SC3/Common/Buffer.hs
@@ -23,16 +23,12 @@
 clipAt :: Int -> [a] -> a
 clipAt ix c = if ix > length c - 1 then last c else if ix < 0 then c !! 0 else c !! ix
 
--- | 'abs' of '(-)'.
-absdif :: Num a => a -> a -> a
-absdif i j = abs (j - i)
-
 -- | 'blendAt' with @clip@ function as argument.
 blendAtBy :: (Integral i,RealFrac n) => (i -> t -> n) -> n -> t -> n
 blendAtBy f ix c =
     let m = floor ix
         m' = fromIntegral m
-    in blend (absdif ix m') (f m c) (f (m + 1) c)
+    in blend (S.absdif ix m') (f m c) (f (m + 1) c)
 
 -- | @SequenceableCollection.blendAt@ returns a linearly interpolated
 -- value between the two closest indices.  Inverse operation is
diff --git a/Sound/SC3/Common/Buffer/Gen.hs b/Sound/SC3/Common/Buffer/Gen.hs
--- a/Sound/SC3/Common/Buffer/Gen.hs
+++ b/Sound/SC3/Common/Buffer/Gen.hs
@@ -22,7 +22,7 @@
 -- | 'sine3_p' with zero phase.
 --
 -- > import Sound.SC3.Plot {- hsc3-plot -}
--- > plotTable1 (sine1_p 512 (1,1))
+-- > plot_p1_ln [sine1_p 512 (1,1)]
 sine1_p :: (Enum n,Floating n) => Int -> (n,n) -> [n]
 sine1_p n (pfreq,ampl) = sine3_p n (pfreq,ampl,0)
 
@@ -32,13 +32,13 @@
 
 -- | 'sum_l' of 'sine1_l'.
 --
--- > plotTable1 (sine1 256 [1,0.95 .. 0.5])
+-- > plot_p1_ln [sine1 256 [1,0.95 .. 0.5]]
 sine1 :: (Enum n,Floating n) => Int -> [n] -> [n]
 sine1 n = sum_l . sine1_l n
 
 -- | 'nrm_u' of 'sine1_l'.
 --
--- > plotTable1 (sine1_nrm 256 [1,0.95 .. 0.5])
+-- > plot_p1_ln [sine1_nrm 256 [1,0.95 .. 0.5]]
 sine1_nrm :: (Enum n,Floating n,Ord n) => Int -> [n] -> [n]
 sine1_nrm n = nrm_u . sine1 n
 
@@ -50,8 +50,8 @@
 
 -- | 'sum_l' of 'sine2_l'.
 --
--- > plotTable1 (sine2 256 (zip [1,2..] [1,0.95 .. 0.5]))
--- > plotTable1 (sine2 256 (zip [1,1.5 ..] [1,0.95 .. 0.5]))
+-- > plot_p1_ln [sine2 256 (zip [1,2..] [1,0.95 .. 0.5])]
+-- > plot_p1_ln [sine2 256 (zip [1,1.5 ..] [1,0.95 .. 0.5])]
 sine2 :: (Enum n,Floating n) => Int -> [(n,n)] -> [n]
 sine2 n = sum_l . sine2_l n
 
@@ -73,7 +73,7 @@
 
 -- | 'sum_l' of 'sine3_l'.
 --
--- > plotTable1 (sine3 256 (zip3 [1,1.5 ..] [1,0.95 .. 0.5] [0,pi/7..]))
+-- > plot_p1_ln [sine3 256 (zip3 [1,1.5 ..] [1,0.95 .. 0.5] [0,pi/7..])]
 sine3 :: (Enum n,Floating n) => Int -> [(n,n,n)] -> [n]
 sine3 n = sum_l . sine3_l n
 
@@ -81,8 +81,7 @@
 
 {- | Generate Chebyshev waveshaping table, see b_gen_cheby.
 
-> plotTable1 (gen_cheby 256 [1,0,1,1,0,1])
-
+> Sound.SC3.Plot.plot_p1_ln [gen_cheby 256 [1,0,1,1,0,1]]
 -}
 gen_cheby :: (Enum n, Floating n, Ord n, Integral i) => i -> [n] -> [n]
 gen_cheby n =
@@ -91,7 +90,7 @@
         ix = [-1,-1 + (2 / (fromIntegral n - 1)) .. 1]
         mix = map sum . transpose
         c_normalize x = let m = maximum (map abs x) in map (* (recip m)) x
-    in c_normalize . mix . map (\(k,a) -> map ((* a) . (c k)) ix) . zip [1..]
+    in c_normalize . mix . zipWith (\k a -> map ((* a) . c k) ix) [1..]
 
 -- | Type specialised 'gen_cheby'.
 cheby :: (Enum n, Floating n, Ord n) => Int -> [n] -> [n]
diff --git a/Sound/SC3/Common/Enum.hs b/Sound/SC3/Common/Enum.hs
--- a/Sound/SC3/Common/Enum.hs
+++ b/Sound/SC3/Common/Enum.hs
@@ -94,6 +94,8 @@
   deriving (Eq, Show)
 
 -- | Resolve 'Warp'.
+--
+-- > map from_warp [Linear,Exponential] == [0,1]
 from_warp :: Num t => Warp t -> t
 from_warp e =
     case e of
diff --git a/Sound/SC3/Common/Envelope.hs b/Sound/SC3/Common/Envelope.hs
--- a/Sound/SC3/Common/Envelope.hs
+++ b/Sound/SC3/Common/Envelope.hs
@@ -106,7 +106,11 @@
 instance Functor Envelope where
   fmap = envelope_coerce
 
--- | Variant without release and loop node inputs (defaulting to nil).
+{- | Variant without release and loop node inputs (defaulting to nil).
+
+> Sound.SC3.Plot.plotEnvelope [envelope [0,1,0] [3,2] [EnvSin,EnvSin]]
+
+-}
 envelope :: Num a => [a] -> [a] -> [Envelope_Curve a] -> Envelope a
 envelope l t c = Envelope l t c Nothing Nothing 0
 
@@ -159,7 +163,7 @@
 
 -- | An envelope is /normal/ if it has no segments with zero duration.
 envelope_is_normal :: (Eq n,Num n) => Envelope n -> Bool
-envelope_is_normal = not . any (== 0) . env_times
+envelope_is_normal = notElem 0 . env_times
 
 -- | Normalise envelope by deleting segments of zero duration.
 envelope_normalise :: (Num a, Ord a) => Envelope a -> Envelope a
@@ -209,16 +213,19 @@
        then replicate n EnvLin
        else take n (cycle c)
 
--- | Linear SC3 form of 'Envelope' data.
---
--- Form is: l0 #t reset loop l1 t0 c0 c0' ...
---
--- > let {l = [0,0.6,0.3,1.0,0]
--- >     ;t = [0.1,0.02,0.4,1.1]
--- >     ;c = [EnvLin,EnvExp,EnvNum (-6),EnvSin]
--- >     ;e = Envelope l t c Nothing Nothing
--- >     ;r = [0,4,-99,-99,0.6,0.1,1,0,0.3,0.02,2,0,1,0.4,5,-6,0,1.1,3,0]}
--- > in envelope_sc3_array e == Just r
+{- | Linear SC3 form of 'Envelope' data.
+
+Form is: l0 #t reset loop l1 t0 c0 c0' ...
+
+envelope_sc3_array (envelope [0,1] [0.1] [EnvLin]) == Just [0,1,-99,-99,1,0.1,1,0]
+
+> let {l = [0,0.6,0.3,1.0,0]
+>     ;t = [0.1,0.02,0.4,1.1]
+>     ;c = [EnvLin,EnvExp,EnvNum (-6),EnvSin]
+>     ;e = Envelope l t c Nothing Nothing
+>     ;r = [0,4,-99,-99,0.6,0.1,1,0,0.3,0.02,2,0,1,0.4,5,-6,0,1.1,3,0]}
+> in envelope_sc3_array e == Just r
+-}
 envelope_sc3_array :: Num a => Envelope a -> Maybe [a]
 envelope_sc3_array e =
     let Envelope l t _ rn ln _ = e
@@ -232,14 +239,15 @@
          l0:l' -> Just (l0 : n' : rn' : ln' : concat (zipWith3 f l' t c))
          _ -> Nothing
 
--- | @IEnvGen@ SC3 form of 'Envelope' data.
---
--- > let {l = [0,0.6,0.3,1.0,0]
--- >     ;t = [0.1,0.02,0.4,1.1]
--- >     ;c = [EnvLin,EnvExp,EnvNum (-6),EnvSin]
--- >     ;e = Envelope l t c Nothing Nothing
--- >     ;r = [0,0,4,1.62,0.1,1,0,0.6,0.02,2,0,0.3,0.4,5,-6,1,1.1,3,0,0]}
--- > in envelope_sc3_ienvgen_array e == Just r
+{- | @IEnvGen@ SC3 form of 'Envelope' data.
+
+> l = [0,0.6,0.3,1.0,0]
+> t = [0.1,0.02,0.4,1.1]
+> c = [EnvLin,EnvExp,EnvNum (-6),EnvSin]
+> e = Envelope l t c Nothing Nothing 0
+> r = [0,0,4,1.62,0.1,1,0,0.6,0.02,2,0,0.3,0.4,5,-6,1,1.1,3,0,0]
+> envelope_sc3_ienvgen_array e == Just r
+-}
 envelope_sc3_ienvgen_array :: Num a => Envelope a -> Maybe [a]
 envelope_sc3_ienvgen_array e =
     let Envelope l t _ _ _ os = e
@@ -310,7 +318,7 @@
              ,(1,gte_f skew 1)]
     in envCoord bp dur amp EnvLin
 
-{- | Co-ordinate based static envelope generator.  Points are (time,value) pairs.
+{- | Coordinate based static envelope generator.  Points are (time,value) pairs.
 
 > let e = envCoord [(0,0),(1/4,1),(1,0)] 1 1 EnvLin
 > envelope_sc3_array e == Just [0,2,-99,-99,1,1/4,1,0,0,3/4,1,0]
@@ -321,20 +329,14 @@
 
 -}
 envCoord :: Num n => [(n,n)] -> n -> n -> Envelope_Curve n -> Envelope n
-envCoord xy dur amp c =
-    let n = length xy
-        (times,levels) = unzip xy
-        times' = map (* dur) (Base.d_dx' times)
-        levels' = map (* amp) levels
-        offset = times' !! 0
-    in Envelope levels' times' (replicate (n - 1) c) Nothing Nothing offset
+envCoord xy dur amp c = envXYC (map (\(x,y) -> (x * dur,y * amp,c)) xy)
 
 -- | Segments given as pairs of (time,level).
 --   The input is sorted by time before processing.
 --
 -- > envPairs [(0, 1), (3, 1.4), (2.1, 0.5)] EnvSin
 envPairs :: (Num n,Ord n) => [(n,n)] -> Envelope_Curve n -> Envelope n
-envPairs xy c = envCoord (sortOn fst xy) 1 1 c
+envPairs xy = envCoord (sortOn fst xy) 1 1
 
 -- | Variant 'envPerc' with user specified 'Envelope_Curve a'.
 envPerc_c :: Num a => a -> a -> a -> Envelope_Curve_2 a -> Envelope a
@@ -392,12 +394,13 @@
 envLinen_c :: Num a => a -> a -> a -> a -> Envelope_Curve_3 a -> Envelope a
 envLinen_c aT sT rT lv c = envLinen_r (LINEN aT sT rT lv c)
 
--- | Linear envelope parameter constructor.
---
--- > let {e = envLinen 0 1 0 1
--- >     ;s = envelope_segments e
--- >     ;p = pack_envelope_segments s}
--- > in p == (env_levels e,env_times e,env_curves e)
+{- | Linear envelope parameter constructor.
+
+> e = envLinen 0 1 0 1
+> s = envelope_segments e
+> p = pack_envelope_segments s
+> p == (env_levels e,env_times e,env_curves e)
+-}
 envLinen :: Num a => a -> a -> a -> a -> Envelope a
 envLinen aT sT rT lv =
     let c = (EnvLin,EnvLin,EnvLin)
@@ -470,11 +473,12 @@
 envASR_c :: Num a => a -> a -> a -> Envelope_Curve_2 a -> Envelope a
 envASR_c aT sL rT c = envASR_r (ASR aT sL rT c)
 
--- | Attack, sustain, release envelope parameter constructor.
---
--- > let {c = 3
--- >     ;r = Just [0,2,1,-99,0.1,3,c,0,0,2,c,0]}
--- > in envelope_sc3_array (envASR 3 0.1 2 EnvSin) == r
+{- | Attack, sustain, release envelope parameter constructor.
+
+> c = 3
+> r = Just [0,2,1,-99,0.1,3,c,0,0,2,c,0]
+> envelope_sc3_array (envASR 3 0.1 2 EnvSin) == r
+-}
 envASR :: Num a => a -> a -> a -> Envelope_Curve a -> Envelope a
 envASR aT sL rT c = envASR_c aT sL rT (c,c)
 
@@ -494,14 +498,18 @@
     else let levels' = head levels : levels
          in Envelope levels' times [EnvStep] releaseNode loopNode 0
 
--- | Segments given as triples of (time,level,curve).  The final curve
--- is ignored. The input is sorted by time before processing.
+-- | Segments given as triples of (time,level,curve).  The final curve is ignored.
 --
--- > envXYC [(0, 1, EnvSin), (3, 1.4, EnvLin), (2.1, 0.5, EnvLin)]
-envXYC :: (Num n,Ord n) => [(n,n,Envelope_Curve n)] -> Envelope n
+-- > envXYC [(0, 1, EnvSin), (2.1, 0.5, EnvLin), (3, 1.4, EnvLin)]
+envXYC :: Num n => [(n,n,Envelope_Curve n)] -> Envelope n
 envXYC xyc =
   let n = length xyc
-      xyc_asc = sortOn (\(x,_,_) -> x) xyc
-      (times,levels,curves) = unzip3 xyc_asc
+      (times,levels,curves) = unzip3 xyc
       offset = times !! 0
   in Envelope levels (Base.d_dx' times) (take (n - 1) curves) Nothing Nothing offset
+
+-- | Variant where the input is sorted by time before processing.
+--
+-- > envXYC_sort [(0, 1, EnvSin), (3, 1.4, EnvLin), (2.1, 0.5, EnvLin)]
+envXYC_sort :: (Num n,Ord n) => [(n,n,Envelope_Curve n)] -> Envelope n
+envXYC_sort = envXYC . sortOn (\(x,_,_) -> x)
diff --git a/Sound/SC3/Common/Help.hs b/Sound/SC3/Common/Help.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/Common/Help.hs
@@ -0,0 +1,167 @@
+-- | Functions to access to the SC3 RTF & HTML based help systems.
+module Sound.SC3.Common.Help where
+
+import Control.Monad {- base -}
+import Data.Char {- base -}
+import Data.Maybe {- base -}
+import System.Environment {- base -}
+import System.FilePath {- filepath -}
+import System.Process {- process -}
+
+import qualified Data.List.Split as Split {- split -}
+
+import qualified Sound.SC3.Common.Base as Base {- hsc3 -}
+
+-- * RTF
+
+-- | Directory containing SC3 RTF help files.
+sc3_rtf_help_dir :: IO FilePath
+sc3_rtf_help_dir = getEnv "SC3_RTF_HELP_DIR"
+
+{- | Find (case-insensitively) indicated file at 'sc3_rtf_help_dir'.
+     Runs the command "find -name" (so UNIX only).
+
+> sc3_rtf_find_file "SinOsc.help.rtf"
+> sc3_rtf_find_file "lfsaw.help.rtf"
+> sc3_rtf_find_file "softClip.rtf"
+-}
+sc3_rtf_find_file :: FilePath -> IO (Maybe FilePath)
+sc3_rtf_find_file fn = do
+  d <- sc3_rtf_help_dir
+  r <- System.Process.readProcess "find" [d,"-iname",fn] ""
+  case lines r of
+    [] -> return Nothing
+    [r0] -> return (Just r0)
+    _ -> error "sc3_rtf_find_file: multiple files?"
+
+-- | 'error' variant.
+sc3_rtf_find_file_err :: FilePath -> IO FilePath
+sc3_rtf_find_file_err = fmap (fromMaybe (error "sc3_rtf_find_file")) . sc3_rtf_find_file
+
+-- | Run the command unrtf (so UNIX only) to convert an RTF file to a TEXT (.scd) file.
+sc3_rtf_to_scd :: FilePath -> FilePath -> IO ()
+sc3_rtf_to_scd rtf_fn scd_fn = do
+  txt <- System.Process.readProcess "unrtf" ["--text",rtf_fn] ""
+  let delete_trailing_whitespace = reverse . dropWhile isSpace . reverse
+      tidy = unlines . map delete_trailing_whitespace . drop 4 . lines
+  writeFile scd_fn (tidy txt)
+
+-- | 'sc3_rtf_to_scd' of 'sc3_rtf_find_file_err', writing output to TMPDIR
+sc3_rtf_help_translate :: String -> IO FilePath
+sc3_rtf_help_translate nm = do
+  tmp <- Base.get_env_default "TMPDIR" "/tmp"
+  rtf_fn <- sc3_rtf_find_file_err (nm <.> "*rtf")
+  let scd_fn = tmp </> takeFileName rtf_fn -<.> "scd"
+  sc3_rtf_to_scd rtf_fn scd_fn
+  return scd_fn
+
+-- | 'sc3_rtf_help_translate' and run editor.
+sc3_rtf_help_scd_open :: (String,[String]) -> String -> IO ()
+sc3_rtf_help_scd_open (cmd,arg) nm = do
+  scd_fn <- sc3_rtf_help_translate nm
+  System.Process.callProcess cmd (arg ++ [scd_fn])
+
+-- | 'sc3_rtf_help_scd_open' with emacsclient --no-wait.
+--
+-- > sc3_rtf_help_scd_open_emacs "lfsaw"
+sc3_rtf_help_scd_open_emacs :: String -> IO ()
+sc3_rtf_help_scd_open_emacs = sc3_rtf_help_scd_open ("emacsclient",["--no-wait"])
+
+-- * SC-DOC
+
+-- | URL for online SC-DOC SuperCollider documentation.
+sc3_scdoc_help_url :: String
+sc3_scdoc_help_url = "http://doc.sccode.org/"
+
+-- | Read the environment variable @SC3_SCDOC_HTML_HELP_DIR@.
+--   The default value is @~\/.local\/share\/SuperCollider/Help@.
+sc3_scdoc_help_dir :: IO String
+sc3_scdoc_help_dir = do
+  h <- getEnv "HOME"
+  let d = h </> ".local/share/SuperCollider/Help"
+  Base.get_env_default "SC3_SCDOC_HTML_HELP_DIR" d
+
+-- | Path to indicated SC3 class help file.
+--
+-- > sc3_scdoc_help_class "SinOsc" == "Classes/SinOsc.html"
+sc3_scdoc_help_class :: String -> String
+sc3_scdoc_help_class c = "Classes" </> c <.> "html"
+
+-- | Generate path to indicated SC3 operator help file.
+--
+-- > sc3_scdoc_help_operator "+" == "Overviews/Operators.html#+"
+sc3_scdoc_help_operator :: String -> FilePath
+sc3_scdoc_help_operator = (++) "Overviews/Operators.html#"
+
+-- | Generate path to indicated SC3 method help.
+--
+-- > sc3_scdoc_help_method '*' ("C","m") == "Classes/C.html#*m"
+sc3_scdoc_help_method :: Char -> (String,String) -> FilePath
+sc3_scdoc_help_method z (c,m) = "Classes" </> c <.> "html#" ++ [z] ++ m
+
+-- | Generate path to indicated SC3 class method help.
+--
+-- > sc3_scdoc_help_class_method ("C","m") == "Classes/C.html#*m"
+sc3_scdoc_help_class_method :: (String,String) -> FilePath
+sc3_scdoc_help_class_method = sc3_scdoc_help_method '*'
+
+-- | Generate path to indicated SC3 instance method help.
+--
+-- > sc3_scdoc_help_instance_method ("C","m") == "Classes/C.html#-m"
+sc3_scdoc_help_instance_method :: (String,String) -> FilePath
+sc3_scdoc_help_instance_method = sc3_scdoc_help_method '-'
+
+{- | SC3 help path documenting x.
+
+> sc3_scdoc_help_path "Operator.distort" == "Overviews/Operators.html#.distort"
+> sc3_scdoc_help_path "Collection.*fill" == "Classes/Collection.html#*fill"
+> sc3_scdoc_help_path "Collection.inject" == "Classes/Collection.html#-inject"
+> sc3_scdoc_help_path "SinOsc" == "Classes/SinOsc.html"
+-}
+sc3_scdoc_help_path :: String -> String
+sc3_scdoc_help_path s = do
+  case Split.splitOn "." s of
+    ["Operator",m] -> sc3_scdoc_help_operator m
+    [c,'*':m] -> sc3_scdoc_help_class_method (c,m)
+    [c,m] -> sc3_scdoc_help_instance_method (c,m)
+    _ -> sc3_scdoc_help_class s
+
+{- | Open SC3 help path, either the local file or the online version.
+     Use @BROWSER@ or @x-www-browser@.
+
+> Base.get_env_default "BROWSER" "x-www-browser"
+
+> sc3_scdoc_help_open True (sc3_scdoc_help_path "SinOsc")
+> sc3_scdoc_help_open True (sc3_scdoc_help_path "Collection.*fill")
+> sc3_scdoc_help_open False (sc3_scdoc_help_path "Collection.inject")
+-}
+sc3_scdoc_help_open :: Bool -> String -> IO ()
+sc3_scdoc_help_open use_loc p = do
+  d <- sc3_scdoc_help_dir
+  b <- Base.get_env_default "BROWSER" "x-www-browser"
+  let u = if use_loc then "file://" ++ (d </> p) else sc3_scdoc_help_url ++ p
+  void (System.Process.rawSystem b [u])
+
+{- | Generate path to indicated SC3 instance method help.
+     Adds initial forward slash if not present.
+
+> let r = "Reference/Server-Command-Reference.html#/b_alloc"
+> sc3_scdoc_help_server_command_path "b_alloc" == r
+
+-}
+sc3_scdoc_help_server_command_path :: String -> FilePath
+sc3_scdoc_help_server_command_path c =
+    let c' = case c of
+               '/':_ -> c
+               _ -> '/':c
+    in "Reference/Server-Command-Reference.html" ++ ('#' : c')
+
+{- | 'sc3_scdoc_help_open' of 'sc3_server_command_path'
+
+> sc3_scdoc_help_server_command_open True "s_new"
+> sc3_scdoc_help_server_command_open False "/b_allocRead"
+-}
+sc3_scdoc_help_server_command_open :: Bool -> String -> IO ()
+sc3_scdoc_help_server_command_open use_loc =
+  sc3_scdoc_help_open use_loc .
+  sc3_scdoc_help_server_command_path
diff --git a/Sound/SC3/Common/Math.hs b/Sound/SC3/Common/Math.hs
--- a/Sound/SC3/Common/Math.hs
+++ b/Sound/SC3/Common/Math.hs
@@ -21,6 +21,10 @@
 two_pi :: Floating n => n
 two_pi = 2 * pi
 
+-- | 'abs' of '(-)'.
+absdif :: Num a => a -> a -> a
+absdif i j = abs (j - i)
+
 -- | SC3 MulAdd type signature, arguments in SC3 order of input, multiply, add.
 type SC3_MulAdd t = t -> t -> t -> t
 
@@ -74,6 +78,43 @@
 sc3_idiv :: RealFrac n => n -> n -> n
 sc3_idiv a b = fromInteger (floor a `div` floor b)
 
+{- | 'sc3_lcm'
+
+Least common multiple. This definition extends the usual definition
+and returns a negative number if any of the operands is negative. This
+makes it consistent with the lattice-theoretical interpretation and
+its idempotency, commutative, associative, absorption laws.
+
+> lcm 4 6 == 12
+> lcm 1 1 == 1
+> lcm 1624 26 == 21112
+> lcm 1624 (-26) /= (-21112)
+> lcm (-1624) (-26) /= (-21112)
+> lcm 513 (gcd 513 44) == 513
+-}
+sc3_lcm :: t -> t -> t
+sc3_lcm = error "sc3_lcm: undefined"
+
+{- | 'sc3_gcd'
+
+Greatest common divisor. This definition extends the usual
+definition and returns a negative number if both operands are
+negative. This makes it consistent with the lattice-theoretical
+interpretation and its idempotency, commutative, associative,
+absorption laws. <https://www.jsoftware.com/papers/eem/gcd.htm>
+
+> gcd 4 6 == 2
+> gcd 0 1 == 1
+> gcd 1024 256 == 256
+> gcd 1024 (-256) == 256
+> gcd (-1024) (-256) /= (-256)
+> gcd (-1024) (lcm (-1024) 256) /= (-1024)
+> gcd 66 54 * lcm 66 54 == 66 * 54
+
+-}
+sc3_gcd :: t -> t -> t
+sc3_gcd = error "sc3_gcd: undefined"
+
 {- | The SC3 @%@ UGen operator is the 'Data.Fixed.mod'' function.
 
 > > 1.5 % 1.2 // ~= 0.3
@@ -138,27 +179,40 @@
 
 > map (sc3_wrap_ni 0 5) [4,5,6] == [4,0,1]
 > map (sc3_wrap_ni 5 10) [3..12] == [8,9,5,6,7,8,9,5,6,7]
+> Sound.SC3.Plot.plot_fn_r1_ln (sc3_wrap_ni (-1) 1) (-2,2)
 
 -}
 sc3_wrap_ni :: RealFrac a => a -> a -> a -> a
 sc3_wrap_ni lo hi n = sc3_mod (n - lo) (hi - lo) + lo
 
-{- | Wrap /n/ to within range /(i,j)/, ie. @AbstractFunction.wrap@,
-ie. /inclusive/ at right edge.  'wrap' is a 'UGen', hence prime.
+{- | sc_wrap::int
 
 > > [5,6].wrap(0,5) == [5,0]
-> map (wrap_hs (0,5)) [5,6] == [5,0]
+> map (wrap_hs_int (0,5)) [5,6] == [5,0]
 
 > > [9,10,5,6,7,8,9,10,5,6].wrap(5,10) == [9,10,5,6,7,8,9,10,5,6]
-> map (wrap_hs (5,10)) [3..12] == [9,10,5,6,7,8,9,10,5,6]
+> map (wrap_hs_int (5,10)) [3..12] == [9,10,5,6,7,8,9,10,5,6]
+-}
+wrap_hs_int :: Integral a => (a, a) -> a -> a
+wrap_hs_int (i,j) n = ((n - i) `mod` (j - i + 1)) + i
 
+{- | Wrap /n/ to within range /(i,j)/, ie. @AbstractFunction.wrap@,
+ie. /inclusive/ at right edge.  'wrap' is a 'UGen', hence prime.
+
+> > [5.0,6.0].wrap(0.0,5.0) == [0.0,1.0]
+> map (wrap_hs (0,5)) [5,6] == [0,1]
+> map (wrap_hs (5,10)) [3..12] == [8,9,5,6,7,8,9,5,6,7]
+
+> Sound.SC3.Plot.plot_fn_r1_ln (wrap_hs (-1,1)) (-2,2)
+
 -}
 wrap_hs :: RealFrac n => (n,n) -> n -> n
 wrap_hs (i,j) n =
-    let r = j - i + 1
-    in if n >= i && n <= j
-       then n
-       else n - r * sc3_floor ((n - i) / r)
+    let r = j - i -- + 1
+        n' = if n >= j then n - r else if n < i then n + r else n
+    in if n' >= i && n' < j
+       then n'
+       else n' - r * sc3_floor ((n' - i) / r)
 
 -- | Variant of 'wrap_hs' with @SC3@ argument ordering.
 --
@@ -222,7 +276,7 @@
     let l = length s
         d' = round d
         a = (d - fromIntegral d') * 10.0 * (n / 12.0)
-    in (n * fromIntegral (d' `div` l)) + (Safe.atNote "degree_to_key" s (d' `mod` l)) + a
+    in (n * fromIntegral (d' `div` l)) + Safe.atNote "degree_to_key" s (d' `mod` l) + a
 
 -- | Linear amplitude to decibels.
 --
@@ -230,9 +284,19 @@
 amp_to_db :: Floating a => a -> a
 amp_to_db = (* 20) . logBase 10
 
--- | Decibels to linear amplitude.
---
--- > map (floor . (* 100). db_to_amp) [-40,-26,-24,-18,-12,-6] == [01,05,06,12,25,50]
+{- | Decibels to linear amplitude.
+
+map (floor . (* 100). db_to_amp) [-40,-26,-24,-18,-12,-6] == [01,05,06,12,25,50]
+
+let amp = map (2 **) [0 .. 15]
+let db = [0,-6 .. -90]
+map (round . ampDb . (/) 1) amp == db
+map (round . amp_to_db . (/) 1) amp == db
+ zip amp db
+
+db_to_amp (-3) == 0.7079457843841379
+amp_to_db 0.7079457843841379 == -3
+-}
 db_to_amp :: Floating a => a -> a
 db_to_amp = (10 **) .  (* 0.05)
 
@@ -336,7 +400,7 @@
 -- > sc3_not sc3_true == sc3_false
 -- > sc3_not sc3_false == sc3_true
 sc3_not :: (Ord n,Num n) => n -> n
-sc3_not = sc3_bool . not . (> 0)
+sc3_not = sc3_bool . (<= 0)
 
 -- | Translate 'Bool' to 'sc3_true' and 'sc3_false'.
 sc3_bool :: Num n => Bool -> n
@@ -432,6 +496,10 @@
 range_hs :: Fractional a => (a,a) -> a -> a
 range_hs = uncurry range
 
+-- | 'flip' 'range_hs'.  This allows cases such as osc `in_range` (0,1)
+in_range :: Fractional a => a -> (a,a) -> a
+in_range = flip range_hs
+
 -- | Calculate multiplier and add values for 'linlin' transform.
 --   Inputs are: input-min input-max output-min output-max
 --
@@ -550,20 +618,20 @@
 -- > map (sc3_explin 10 100 1 2) [10,10,31,100,100]
 sc3_explin :: (Ord a, Floating a) => a -> a -> a -> a -> a -> a
 sc3_explin src_l src_r dst_l dst_r x =
-    case apply_clip_rule Clip_Both src_l src_r dst_l dst_r x of
-      Just r -> r
-      Nothing -> (log (x / src_l)) / (log (src_r / src_l)) * (dst_r - dst_l) + dst_l
+  fromMaybe
+  (logBase (src_r / src_l) (x / src_l) * (dst_r - dst_l) + dst_l)
+  (apply_clip_rule Clip_Both src_l src_r dst_l dst_r x)
 
 -- * ExpExp
 
 -- | Translate from one exponential range to another.
 --
--- > map (sc3_expexp 0.1 10 4.3 100) [1.. 10]
+-- > map (sc3_expexp 0.1 10 4.3 100) [1 .. 10]
 sc3_expexp :: (Ord a, Floating a) => a -> a -> a -> a -> a -> a
 sc3_expexp src_l src_r dst_l dst_r x =
-    case apply_clip_rule Clip_Both src_l src_r dst_l dst_r x of
-      Just r -> r
-      Nothing -> ((dst_r / dst_l) ** (log (x / src_l) / log (src_r / src_l))) * dst_l
+  fromMaybe
+  ((dst_r / dst_l) ** logBase (src_r / src_l) (x / src_l) * dst_l)
+  (apply_clip_rule Clip_Both src_l src_r dst_l dst_r x)
 
 -- * LinCurve
 
diff --git a/Sound/SC3/Common/Math/Filter/BEQ.hs b/Sound/SC3/Common/Math/Filter/BEQ.hs
--- a/Sound/SC3/Common/Math/Filter/BEQ.hs
+++ b/Sound/SC3/Common/Math/Filter/BEQ.hs
@@ -104,7 +104,7 @@
       alpha = sin_w0 * 0.5 * sqrt((a + recip a) * (rs - 1) + 2.0)
       i = (a+1) * cos_w0
       j = (a-1) * cos_w0
-      k = 2 * sqrt(a) * alpha
+      k = 2 * sqrt a * alpha
       b0rz = recip ((a + 1) - j + k)
       a0 = a * ((a + 1) + j + k) * b0rz
       a1 = -2.0 * a * ((a - 1) + i) * b0rz
diff --git a/Sound/SC3/Common/Math/Interpolate.hs b/Sound/SC3/Common/Math/Interpolate.hs
--- a/Sound/SC3/Common/Math/Interpolate.hs
+++ b/Sound/SC3/Common/Math/Interpolate.hs
@@ -3,89 +3,98 @@
 
 import Sound.SC3.Common.Math {- hsc3 -}
 
--- | An interpolation function takes three arguments. /x0/ is the left
--- or begin value, /x1/ is the right or end value, and /t/ is a (0,1)
--- index.
+{- | An interpolation function takes three arguments.
+     x0 is the left or begin value, x1 is the right or end value, t is a (0,1) index.
+-}
 type Interpolation_F t = t -> t -> t -> t
 
--- | Clip /x/ to (0,1) and run /f/.
+-- | Clip x to (0,1) and run f.
 --
 -- > interpolate linear (-1,1) 0.5 == 0
 interpolate :: (Num t,Ord t) => Interpolation_F t -> (t,t) -> t -> t
 interpolate f (l,r) x = if x < 0 then l else if x > 1 then r else f l r x
 
--- | Step function, ignores /t/ and returns /x1/.
+-- | Step function, ignores t and returns x1.
 step :: Interpolation_F t
 step _ x1 _ = x1
 
--- | Linear interpolation funtion, /x0/ is at /t/ of zero, and /x1/ at /t/ of one.
---
--- > map (linear 1 10) [0,0.25 .. 1] == [1,3.25,5.5,7.75,10]
---
--- > import Sound.SC3.Plot {- hsc3-plot -}
--- > plotTable1 (map (linear (-1) 1) [0,0.01 .. 1])
+{- | Linear interpolation funtion.
+
+> map (linear 1 10) [0,0.25 .. 1] == [1,3.25,5.5,7.75,10]
+
+> import Sound.SC3.Plot {- hsc3-plot -}
+> plot_fn_r1_ln (linear (-1) 1) (0,1)
+-}
 linear :: Num t => Interpolation_F t
 linear x0 x1 t = t * (x1 - x0) + x0
 
--- | Exponential interpolation, /x0/ must not be @0@, (/x0/,/x1/) must
--- not span @0@.
---
--- > plotTable1 (map (exponential 0.001 1) [0,0.01 .. 1])
+{- | Exponential interpolation.
+     x0 must not be zero and (x0,x1) must not span zero.
+
+> plot_fn_r1_ln (exponential 0.001 1) (0,1)
+> plot_fn_r1_ln (exponential 1 2) (0,1)
+> plot_fn_r1_ln (exponential 20 20000) (0,1)
+-}
 exponential :: Floating t => Interpolation_F t
 exponential x0 x1 t = x0 * ((x1 / x0) ** t)
 
--- | Variant that allows /x0/ to be @0@, though (/x0/,/x1/) must not
--- span @0@.
---
--- > plotTable1 (map (exponential' 0 1) [0,0.01 .. 1])
--- > plotTable1 (map (exponential' 0 (-1)) [0,0.01 .. 1])
-exponential' :: (Eq t,Floating t) => Interpolation_F t
-exponential' x0 x1 =
+{- | Variant that allows x0 to be zero, though (x0,x1) must not span zero.
+
+> plot_fn_r1_ln (exponential_0 0 1) (0,1)
+> plot_fn_r1_ln (exponential_0 0 (-1)) (0,1)
+-}
+exponential_0 :: (Eq t,Floating t) => Interpolation_F t
+exponential_0 x0 x1 =
     let epsilon = 1e-6
         x0' = if x0 == 0 then epsilon * signum x1 else x0
     in exponential x0' x1
 
--- | 'linear' of 'exponential'', ie. allows (/x0/,/x1/) to span @0@.
+-- | 'linear' of 'exponential_0' of (0,1), ie. allows (x0,x1) to span zero.
 --
--- > plotTable1 (map (exponential'' (-1) 1) [0,0.01 .. 1])
-exponential'' :: (Eq t,Floating t) => Interpolation_F t
-exponential'' x0 x1 t = linear x0 x1 (exponential' 0 1 t)
+-- > plot_fn_r1_ln (exponential_lin (-1) 1) (0,1)
+exponential_lin :: (Eq t,Floating t) => Interpolation_F t
+exponential_lin x0 x1 t = linear x0 x1 (exponential_0 0 1 t)
 
--- | 'linear' with /t/ transformed by sine function over (-pi/2,pi/2).
+-- | 'linear' with t transformed by sine function over (-pi/2,pi/2).
 --
--- > plotTable1 (map (sine (-1) 1) [0,0.01 .. 1])
+-- > plot_fn_r1_ln (sine (-1) 1) (0,1)
 sine :: Floating t => Interpolation_F t
 sine x0 x1 t =
     let t' = - cos (pi * t) * 0.5 + 0.5
     in linear x0 x1 t'
 
--- | If /x0/ '<' /x1/ rising sine segment (0,pi/2), else falling
--- segment (pi/2,pi).
+-- | If x0 '<' x1 rising sine segment (0,pi/2), else falling segment (pi/2,pi).
 --
--- > plotTable1 (map (welch (-1) 1) [0,0.01 .. 1])
--- > plotTable1 (map (welch 1 (-1)) [0,0.01 .. 1])
+-- > plot_fn_r1_ln (welch (-1) 1) (0,1)
+-- > plot_fn_r1_ln (welch 1 (-1)) (0,1)
 welch :: (Ord t, Floating t) => Interpolation_F t
 welch x0 x1 t =
     if x0 < x1
     then x0 + (x1 - x0) * sin (half_pi * t)
     else x1 - (x1 - x0) * sin (half_pi - (half_pi * t))
 
--- | Curvature controlled by single parameter /c/.  @0@ is 'linear',
--- increasing /c/ approaches 'exponential'.
---
--- > plotTable (map (\c-> map (curve c (-1) 1) [0,0.01 .. 1]) [-6,-4 .. 6])
+{- | Curvature controlled by single parameter c.
+     Zero is 'linear', increasing c approaches 'exponential' and continues past it.
+     The value for c at which the curve is close to exponential depends on the range.
+
+> plot_p1_ln (map (\c-> map (curve c (-1) 1) [0,0.01 .. 1]) [-6,-4 .. 6])
+> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [curve 4.4 1 100,exponential 1 100,curve 4.5 1 100])
+> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [exponential 20 20000,curve 7 20 20000])
+> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [fader 0 2,curve 2 0 2])
+-}
 curve :: (Ord t, Floating t) => t -> Interpolation_F t
 curve c x0 x1 t =
     if abs c < 0.0001
-    then t * (x1 - x0) + x0
+    then linear x0 x1 t
     else let d = 1 - exp c
              n = 1 - exp (t * c)
          in x0 + (x1 - x0) * (n/d)
 
--- | Square of 'linear' of 'sqrt' of /x0/ and /x1/, therefore neither
--- may be negative.
---
--- > plotTable1 (map (squared 0 1) [0,0.01 .. 1])
+{- | Square of 'linear' of 'sqrt' of x0 and x1, therefore neither may be negative.
+
+> plot_fn_r1_ln (squared 0 1) (0,1)
+> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [curve 2.05 0 1,squared 0 1])
+-}
 squared :: Floating t => Interpolation_F t
 squared x0 x1 t =
     let x0' = sqrt x0
@@ -93,9 +102,11 @@
         l = linear x0' x1' t
     in l * l
 
--- | Cubic variant of 'squared'.
---
--- > plotTable1 (map (cubed 0 1) [0,0.01 .. 1])
+{- | Cubic variant of 'squared'.
+
+> plot_fn_r1_ln (cubed 0 1) (0,1)
+> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [curve 3.25 0 1,cubed 0 1])
+-}
 cubed :: Floating t => Interpolation_F t
 cubed x0 x1 t =
     let x0' = x0 ** (1/3)
@@ -105,6 +116,17 @@
 
 -- | x0 until end, then immediately x1.
 --
--- > plotTable1 (map (hold 0 1) [0,0.01 .. 1])
+-- > plot_fn_r1_ln (hold 0 1) (0,2)
 hold :: (Num t,Ord t) => Interpolation_F t
 hold x0 x1 t = if t >= 1 then x1 else x0
+
+{- | Fader curve, equal to 'squared' when x1 > x0.
+
+> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [squared 0 1,fader 0 1])
+> plot_p1_ln (map (\f -> map f [0,0.01 .. 1]) [curve 2 1 0,fader 1 0])
+-}
+fader :: (Num t,Ord t) => Interpolation_F t
+fader x0 x1 t =
+  let rng = x1 - x0
+      sqr i = i * i
+  in sqr (if rng > 0 then t else 1 - (1 - t)) * rng + x0
diff --git a/Sound/SC3/Common/Math/Operator.hs b/Sound/SC3/Common/Math/Operator.hs
--- a/Sound/SC3/Common/Math/Operator.hs
+++ b/Sound/SC3/Common/Math/Operator.hs
@@ -22,50 +22,52 @@
 -- * Unary
 
 -- | Enumeration of @SC3@ unary operator UGens.
+--
+-- > zip (map show [minBound :: SC3_Unary_Op .. maxBound]) [0..]
 data SC3_Unary_Op
             = Neg -- -
             | Not -- !
             | IsNil
             | NotNil
             | BitNot
-            | Abs
+            | Abs -- 5
             | AsFloat
             | AsInt
-            | Ceil
-            | Floor
-            | Frac
+            | Ceil -- 8
+            | Floor -- 9
+            | Frac -- 10
             | Sign
             | Squared
             | Cubed
             | Sqrt
-            | Exp
-            | Recip
-            | MIDICPS
+            | Exp -- 15
+            | Recip -- 16
+            | MIDICPS -- 17
             | CPSMIDI
             | MIDIRatio
-            | RatioMIDI
+            | RatioMIDI -- 20
             | DbAmp
             | AmpDb
             | OctCPS
             | CPSOct
-            | Log
+            | Log -- 25
             | Log2
             | Log10
-            | Sin
+            | Sin -- 28
             | Cos
-            | Tan
+            | Tan -- 30
             | ArcSin
             | ArcCos
             | ArcTan
             | SinH
-            | CosH
-            | TanH
+            | CosH -- 35
+            | TanH -- 36
             | Rand_ -- UGen
             | Rand2
             | LinRand_ -- UGen
-            | BiLinRand
+            | BiLinRand -- 40
             | Sum3Rand
-            | Distort
+            | Distort -- 42
             | SoftClip
             | Coin
             | DigitValue
@@ -103,8 +105,8 @@
 
 -- | Given name of unary operator derive index.
 --
--- > mapMaybe (unaryIndex CI) (words "NEG CUBED") == [0,13]
--- > unaryIndex CS "SinOsc" == Nothing
+-- > mapMaybe (unaryIndex Base.CI) (words "abs CUBED midicps NEG") == [5,13,17,0]
+-- > unaryIndex Base.CS "SinOsc" == Nothing
 unaryIndex :: Base.Case_Rule -> String -> Maybe Int
 unaryIndex cr nm =
     let ix = Base.rlookup_str cr nm unary_sym_tbl
@@ -115,6 +117,7 @@
 --
 -- > map (is_unary CI) (words "ABS MIDICPS NEG")
 -- > map (is_unary CI) (words "- RAND")
+-- > map (is_unary CI) (words "arctan atan")
 is_unary :: Base.Case_Rule -> String -> Bool
 is_unary cr = isJust . unaryIndex cr
 
@@ -122,7 +125,7 @@
 
 -- | Enumeration of @SC3@ unary operator UGens.
 --
--- > map show [minBound :: Binary .. maxBound]
+-- > zip (map show [minBound :: SC3_Binary_Op .. maxBound]) [0..]
 data SC3_Binary_Op
             = Add -- 0
             | Sub -- 1
@@ -137,36 +140,36 @@
             | LE -- 10
             | GE -- 11
             | Min -- 12
-            | Max
-            | BitAnd
-            | BitOr
+            | Max -- 13
+            | BitAnd -- 14
+            | BitOr -- 15
             | BitXor
-            | LCM
-            | GCD
-            | Round
-            | RoundUp
+            | LCM -- 17
+            | GCD -- 18
+            | Round -- 19
+            | RoundUp -- 20
             | Trunc
             | Atan2
             | Hypot
             | Hypotx
             | Pow -- 25
-            | ShiftLeft
-            | ShiftRight
+            | ShiftLeft -- 26
+            | ShiftRight -- 27
             | UnsignedShift
             | Fill
-            | Ring1
+            | Ring1 -- 30
             | Ring2
             | Ring3
             | Ring4
             | DifSqr
-            | SumSqr
+            | SumSqr -- 35
             | SqrSum
             | SqrDif
             | AbsDif
             | Thresh
-            | AMClip
+            | AMClip -- 40
             | ScaleNeg
-            | Clip2
+            | Clip2 -- 42
             | Excess
             | Fold2
             | Wrap2
@@ -206,7 +209,7 @@
 -- > map fst sc3_binary_op_sym_tbl
 sc3_binary_op_sym_tbl :: [(String,Int)]
 sc3_binary_op_sym_tbl =
-  let f x = maybe (show x) id (lookup x binary_sym_tbl)
+  let f x = fromMaybe (show x) (lookup x binary_sym_tbl)
   in zip (map f [Add .. ExpRandRange]) [0..]
 
 -- | Lookup possibly symbolic name for standard binary operators.
@@ -219,8 +222,9 @@
 
 -- | Given name of binary operator derive index.
 --
--- > mapMaybe (binaryIndex CI) (words "* MUL RING1") == [2,2,30]
--- > binaryIndex CI "SINOSC" == Nothing
+-- > mapMaybe (binaryIndex Base.CI) (words "* MUL RING1 +") == [2,2,30,0]
+-- > binaryIndex Base.CI "SINOSC" == Nothing
+-- > map (\x -> (x,binaryIndex Base.CI x)) (map snd binary_sym_tbl)
 binaryIndex :: Base.Case_Rule -> String -> Maybe Int
 binaryIndex cr nm =
     let ix = Base.rlookup_str cr nm binary_sym_tbl
@@ -235,13 +239,21 @@
 
 -- * Operator
 
+-- | Lookup operator name for operator UGens, else UGen name.
+ugen_operator_name :: String -> Int -> Maybe String
+ugen_operator_name nm n =
+    case nm of
+      "UnaryOpUGen" -> Just (unaryName n)
+      "BinaryOpUGen" -> Just (binaryName n)
+      _ -> Nothing
+
 -- | Order of lookup: binary then unary.
 --
 -- > map (resolve_operator Sound.SC3.Common.Base.CI) (words "+ - ADD SUB NEG")
 resolve_operator :: Base.Case_Rule -> String -> (String,Maybe Int)
 resolve_operator cr nm =
     case binaryIndex cr nm of
-      Just sp -> ("SC3_Binary_OpOpUGen",Just sp)
+      Just sp -> ("BinaryOpUGen",Just sp)
       Nothing -> case unaryIndex cr nm of
                    Just sp -> ("UnaryOpUGen",Just sp)
                    _ -> (nm,Nothing)
@@ -369,7 +381,7 @@
     fold2 :: a -> a -> a
     fold2 a b = Math.sc3_fold a (-b) b
     gcdE :: a -> a -> a
-    gcdE = error "gcdE"
+    gcdE = Math.sc3_gcd
     hypot :: a -> a -> a
     hypot = Math.sc3_hypot
     hypotx :: a -> a -> a
@@ -377,9 +389,9 @@
     iDiv :: a -> a -> a
     iDiv = Math.sc3_idiv
     lcmE :: a -> a -> a
-    lcmE = error "lcmE"
+    lcmE = Math.sc3_lcm
     modE :: a -> a -> a
-    modE = error "modE"
+    modE = Math.sc3_mod
     randRange :: a -> a -> a
     randRange = error "randRange"
     ring1 :: a -> a -> a
@@ -411,13 +423,13 @@
     fold2 a b = Math.sc3_fold a (-b) b
     modE = F.mod'
     roundUp a b = if b == 0 then a else ceilingE (a/b + 0.5) * b
-    wrap2 a b = Math.sc3_wrap_ni a (-b) b
+    wrap2 a b = Math.sc3_wrap_ni (-b) b a
 
 instance BinaryOp Double where
     fold2 a b = Math.sc3_fold a (-b) b
     modE = F.mod'
     roundUp a b = if b == 0 then a else ceilingE (a/b + 0.5) * b
-    wrap2 a b = Math.sc3_wrap_ni a (-b) b
+    wrap2 a b = Math.sc3_wrap_ni (-b) b a
 
 -- * Infix
 
diff --git a/Sound/SC3/Common/Math/Warp.hs b/Sound/SC3/Common/Math/Warp.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/Common/Math/Warp.hs
@@ -0,0 +1,135 @@
+-- | A warp is a mapping from the space @[0,1]@ to a user defined space @[l,r]@.
+module Sound.SC3.Common.Math.Warp where
+
+import Numeric {- base -}
+
+import qualified Sound.SC3.Common.Math as Math {- hsc3 -}
+
+-- | A warp function is lhs -> rhs -> x -> y
+type Warp_f t = t -> t -> t -> t
+
+{- | Linear real value map.
+
+> map (warp_lin 1 2) [0,1/2,1] == [1,3/2,2]
+> map (warp_lin (-1) 1) [0,1/2,1] == [-1,0,1]
+-}
+warp_lin :: Fractional t => Warp_f t
+warp_lin l r n = let z = r - l in n * z + l
+
+{- | Inverse of 'warp_lin'
+
+> map (warp_lin_inv 1 2) [1,3/2,2] == [0,1/2,1]
+> map (warp_lin_inv (-1) 1) [-1,0,1] == [0,1/2,1]
+-}
+warp_lin_inv :: Fractional t => Warp_f t
+warp_lin_inv l r n = let z = r - l in (n - l) / z
+
+{- | The left and right must both be non zero and have the same sign.
+
+> map (warp_exp 1 2) [0,0.5,1] == [1,2 ** 0.5,2]
+> import Sound.SC3.Plot {- hsc3-plot -}
+> plot_p1_ln [map (warp_exp 1 2) [0,0.01 .. 1]]
+-}
+warp_exp :: Floating a => Warp_f a
+warp_exp l r n = let z = r / l in (z ** n) * l
+
+warp_exp_inv :: Floating a => Warp_f a
+warp_exp_inv l r n = let z = r / l in logBase z (n / l)
+
+{- | Cosine warp
+
+> map (warp_cos 1 2) [0,0.25,0.5,0.75,1]
+> plot_p1_ln [map (warp_cos 1 2) [0,0.01 .. 1]]
+-}
+warp_cos :: Floating t => Warp_f t
+warp_cos l r n = warp_lin 0 (r - l) (0.5 - (cos (pi * n) / 2))
+
+warp_cos_inv :: Floating a => Warp_f a
+warp_cos_inv l r n = acos (1.0 - (warp_lin_inv 0 (r - l) n * 2)) / pi
+
+{- | Sine warp
+
+> map (warp_sin 1 2) [0,0.25,0.5,0.75,1]
+> plot_p1_ln [map (warp_sin 1 2) [0,0.01 .. 1]]
+-}
+warp_sin :: Floating t => Warp_f t
+warp_sin l r n = warp_lin 0 (r - l) (sin (pi * 0.5 * n))
+
+warp_sin_inv :: Floating t => Warp_f t
+warp_sin_inv l r n = asin (warp_lin_inv 0 (r - l) n) / (pi / 2)
+
+{- | Fader warp.  Left and right values are ordinarily zero and one.
+
+> map (warp_amp 0 1) [0,0.5,1] == [0,0.25,1]
+
+> plot_p1_ln [map (warp_amp 0 2) [0,0.01 .. 1]]
+> plot_p1_ln [map (warp_amp_inv 0 1 . warp_amp 0 1) [0,0.01 .. 1]]
+-}
+warp_amp :: Num a => Warp_f a
+warp_amp l r n = (n * n) * (r - l) + l
+
+warp_amp_inv :: Floating a => Warp_f a
+warp_amp_inv l r n = sqrt ((n - l) / (r - l))
+
+{- | DB fader warp. Left and right values are ordinarily negative
+infinity and zero.  An input of @0@ gives @-180@.
+
+> map (round . warp_db (-180) 0) [0,0.5,1] == [-180,-12,0]
+
+> plot_p1_ln [map (warp_db (-60) 0) [0,0.01 .. 1]]
+> plot_p1_ln [map (warp_db_inv 0 60) [0 .. 60]]
+-}
+warp_db :: (Eq a, Floating a) => Warp_f a
+warp_db l r n =
+  let n' = if n == 0 then -180 else Math.amp_to_db (n * n)
+  in Math.sc3_linlin n' (-180) 0 l r
+
+warp_db_inv :: Floating a => Warp_f a
+warp_db_inv l r n = sqrt (Math.db_to_amp (Math.sc3_linlin n l r (-180) 0))
+
+{- | A curve warp given by a real /n/.
+
+> warp_curve (-3) 1 2 0.25 == 1.5552791692202022
+> warp_curve (-3) 1 2 0.50 == 1.8175744761936437
+
+> plot_p1_ln [map (warp_curve (-3) 1 2) [0,0.01 .. 1]]
+> plot_p1_ln (map (\c -> map (warp_curve c 1 2) [0,0.01 .. 1]) [0,3,6,9])
+> plot_p1_ln [map (warp_curve_inv 7 20 20000 . warp_curve 7 20 20000) [0,0.01 .. 1]]
+-}
+warp_curve :: (Ord a, Floating a) => a -> Warp_f a
+warp_curve k l r n =
+  if abs k < 0.001
+  then warp_lin l r n
+  else let e = exp k
+           a = (r - l) / (1 - e)
+           b = l + a
+       in b - ((e ** n) * a)
+
+warp_curve_inv :: (Ord a, Floating a) => a -> Warp_f a
+warp_curve_inv k l r n =
+  if abs k < 0.001
+  then warp_lin l r n
+  else let e = exp k
+           a = (r - l) / (1 - e)
+           b = l + a
+       in log ((b - n) / a) / k
+
+{- | Select warp functions by name.  Numerical names are interpreted as /curve/ values for 'warpCurve'.
+
+> let Just w = warp_named "lin"
+> let Just w = warp_named "-3"
+> let Just w = warp_named "6"
+> plot_p1_ln [map ((fst w) 1 2) [0,0.01 .. 1]]
+-}
+warp_named :: (Floating t, RealFrac t) => String -> Maybe (Warp_f t, Warp_f t)
+warp_named nm =
+    case nm of
+      "lin" -> Just (warp_lin,warp_lin_inv)
+      "exp" -> Just (warp_exp,warp_exp_inv)
+      "sin" -> Just (warp_sin,warp_sin_inv)
+      "cos" -> Just (warp_cos,warp_cos_inv)
+      "amp" -> Just (warp_amp,warp_amp_inv)
+      "db" -> Just (warp_db,warp_db_inv)
+      _ -> case readSigned readFloat nm of
+             [(c,"")] -> Just (warp_curve c,warp_curve_inv c)
+             _ -> Nothing
diff --git a/Sound/SC3/Common/UId.hs b/Sound/SC3/Common/UId.hs
--- a/Sound/SC3/Common/UId.hs
+++ b/Sound/SC3/Common/UId.hs
@@ -4,12 +4,10 @@
 --   Used by non-deterministic (noise) and non-sharable (demand) unit generators.
 module Sound.SC3.Common.UId where
 
-import Control.Monad {- base -}
 import Data.Functor.Identity {- base -}
 import Data.List {- base -}
 import qualified Data.Unique as Unique {- base -}
 
---import qualified Control.Monad.Trans.Identity as Identity {- transformers -}
 import qualified Control.Monad.Trans.Reader as Reader {- transformers -}
 import qualified Control.Monad.Trans.State as State {- transformers -}
 import qualified Data.Digest.Murmur32 as Murmur32 {- hashable -}
@@ -31,7 +29,7 @@
     generateUId = State.get >>= \n -> State.put (n + 1) >> return n
 
 instance UId IO where
-    generateUId = liftM Unique.hashUnique Unique.newUnique
+    generateUId = fmap Unique.hashUnique Unique.newUnique
 
 instance UId m => UId (Reader.ReaderT t m) where
    generateUId = Reader.ReaderT (const generateUId)
@@ -98,6 +96,7 @@
 -- > map resolveID ['α','β'] == [1439603815,4131151318]
 -- > map resolveID [('α','β'),('β','α')] == [3538183581,3750624898]
 -- > map resolveID [('α',('α','β')),('β',('α','β'))] == [0020082907,2688286317]
+-- > map resolveID [('α','α','β'),('β','α','β')] == [0020082907,2688286317]
 class Murmur32.Hashable32 a => ID a where
     resolveID :: a -> Id
     resolveID = fromIntegral . Murmur32.asWord32 . Murmur32.hash32
@@ -105,6 +104,7 @@
 instance ID Char where
 instance ID Int where
 instance (ID p,ID q) => ID (p,q) where
+instance (ID p,ID q,ID r) => ID (p,q,r) where
 
 -- | /n/ identifiers from /x/.
 --
diff --git a/Sound/SC3/Server/Command/Generic.hs b/Sound/SC3/Server/Command/Generic.hs
--- a/Sound/SC3/Server/Command/Generic.hs
+++ b/Sound/SC3/Server/Command/Generic.hs
@@ -465,9 +465,8 @@
 -- * UGen commands.
 
 -- | Generate accumulation buffer given time-domain IR buffer and FFT size.
-pc_preparePartConv :: Integral i => i -> i -> i -> Message
-pc_preparePartConv b irb fft_size =
-    b_gen b "PreparePartConv" (map int32 [irb, fft_size])
+partConv_preparePartConv :: Integral i => i -> i -> i -> Message
+partConv_preparePartConv b irb fft_size = b_gen b "PreparePartConv" (map int32 [irb, fft_size])
 
 -- * Unpack
 
@@ -522,7 +521,7 @@
 unpack_b_setn_err :: (Num i,Fractional f) => Message -> (i,i,i,[f])
 unpack_b_setn_err = fromMaybe (error "unpack_b_setn") . unpack_b_setn
 
--- | Unpack @b_info@ message, fields are (id,frames,channels,sample-rate).
+-- | Unpack b_info message, fields are (id,frames,channels,sample-rate).
 unpack_b_info :: (Num i,Fractional f) => Message -> Maybe (i,i,i,f)
 unpack_b_info m =
     let to_i = fromIntegral
diff --git a/Sound/SC3/Server/Command/Plain.hs b/Sound/SC3/Server/Command/Plain.hs
--- a/Sound/SC3/Server/Command/Plain.hs
+++ b/Sound/SC3/Server/Command/Plain.hs
@@ -390,8 +390,8 @@
 -- * UGen commands.
 
 -- | Generate accumulation buffer given time-domain IR buffer and FFT size.
-pc_preparePartConv :: Int -> Int -> Int -> Message
-pc_preparePartConv = G.pc_preparePartConv
+partConv_preparePartConv :: Int -> Int -> Int -> Message
+partConv_preparePartConv = G.partConv_preparePartConv
 
 -- * Unpack
 
diff --git a/Sound/SC3/Server/Graphdef.hs b/Sound/SC3/Server/Graphdef.hs
--- a/Sound/SC3/Server/Graphdef.hs
+++ b/Sound/SC3/Server/Graphdef.hs
@@ -3,19 +3,26 @@
 module Sound.SC3.Server.Graphdef where
 
 import Control.Monad {- base -}
-import qualified Data.ByteString.Lazy as L {- bytestring -}
 import Data.List {- base -}
-import qualified Safe {- safe -}
+import Data.Maybe {- base -}
 import System.FilePath {- filepath -}
-import System.IO {- base -}
+import Text.Printf {- base -}
 
+import qualified Data.Binary.Get as Get {- binary -}
+import qualified Data.Binary.IEEE754 as IEEE754 {- data-binary-ieee754 -}
+import qualified Data.ByteString.Lazy as L {- bytestring -}
+import qualified Safe {- safe -}
+
 import qualified Sound.OSC.Coding.Byte as Byte {- hosc -}
 import qualified Sound.OSC.Coding.Cast as Cast {- hosc -}
 import qualified Sound.OSC.Datum as Datum {- hosc -}
 
+import qualified Sound.SC3.Common.Math.Operator as Operator {- hsc3 -}
+import qualified Sound.SC3.Common.Rate as Rate {- hsc3 -}
+
 -- * Type
 
--- | Names are ASCII strings.
+-- | Names are ASCII strings (ie. ByteString.Char8)
 type Name = Datum.ASCII
 
 -- | Controls are a name and a ugen-index.
@@ -24,14 +31,20 @@
 -- | Constants are floating point.
 type Sample = Double
 
--- | Inputs are a ugen-index and a port-index.
---   If the ugen-index is -1 it indicates a constant.
-data Input = Input Int Int deriving (Eq,Show)
+-- | UGen indices are Int.
+type UGen_Index = Int
 
--- | Read ugen-index of input, else Nothing.
-input_ugen_ix :: Input -> Maybe Int
-input_ugen_ix (Input u p) = if p == -1 then Nothing else Just u
+-- | Port indices are Int.
+type Port_Index = Int
 
+-- | Index used to indicate constants at UGen inputs.
+--   Ie. if the ugen-index is this value (-1) it indicates a constant.
+constant_index :: UGen_Index
+constant_index = -1
+
+-- | Inputs are a ugen-index and a port-index.
+data Input = Input UGen_Index Port_Index deriving (Eq,Show)
+
 -- | Rates are encoded as integers (IR = 0, KR = 1, AR = 2, DR = 3).
 type Rate = Int
 
@@ -44,10 +57,23 @@
 -- | Unit generator type.
 type UGen = (Name,Rate,[Input],[Output],Special)
 
+-- | 'UGen' name.
+ugen_name_str :: UGen -> String
+ugen_name_str (nm,_,_,_,_) = Datum.ascii_to_string nm
+
+-- | 'UGen' name, using operator name if appropriate.
+ugen_name_op :: UGen -> String
+ugen_name_op (nm,_,_,_,k) =
+  let s = Datum.ascii_to_string nm
+  in fromMaybe s (Operator.ugen_operator_name s k)
+
 -- | 'UGen' 'Rate'.
 ugen_rate :: UGen -> Rate
 ugen_rate (_,r,_,_,_) = r
 
+ugen_rate_enum :: UGen -> Rate.Rate
+ugen_rate_enum = toEnum . ugen_rate
+
 -- | 'UGen' 'Input's.
 ugen_inputs :: UGen -> [Input]
 ugen_inputs (_,_,i,_,_) = i
@@ -56,17 +82,15 @@
 ugen_outputs :: UGen -> [Output]
 ugen_outputs (_,_,_,o,_) = o
 
--- | Predicate to examine Ugen name and decide if it is a control.
+-- | Predicate to examine UGen name and decide if it is a control.
 ugen_is_control :: UGen -> Bool
-ugen_is_control (nm,_,_,_,_) =
-  Datum.ascii_to_string nm `elem` ["Control","LagControl","TrigControl"]
+ugen_is_control =
+  (`elem` ["Control","LagControl","TrigControl"]) .
+  ugen_name_str
 
--- | Input is a UGen and the UGen is a control.
+-- | Input is a UGen (ie. not a constant, indicated by a ugen-index of -1) and the UGen is a control.
 input_is_control :: Graphdef -> Input -> Bool
-input_is_control g (Input u _) =
-    if u == -1
-    then False
-    else ugen_is_control (graphdef_ugen g u)
+input_is_control g (Input u _) = (u /= constant_index) && ugen_is_control (graphdef_ugen g u)
 
 -- | Graph definition type.
 data Graphdef = Graphdef {graphdef_name :: Name
@@ -76,7 +100,7 @@
                 deriving (Eq,Show)
 
 -- | Lookup UGen by index.
-graphdef_ugen :: Graphdef -> Int -> UGen
+graphdef_ugen :: Graphdef -> UGen_Index -> UGen
 graphdef_ugen g = Safe.atNote "graphdef_ugen" (graphdef_ugens g)
 
 -- | Lookup Control and default value by index.
@@ -95,75 +119,88 @@
 graphdef_ugen_nid :: Graphdef -> Int -> Int
 graphdef_ugen_nid g n = graphdef_control_nid g 0 + length (graphdef_controls g) + n
 
--- * Read (version 0 or 2).
+-- * BINARY GET (version 0|1 or 2)
 
--- | Read a 'Sample'.
-read_sample :: Handle -> IO Sample
-read_sample = fmap realToFrac . Byte.read_f32
+-- | Get a 'Name' (Pascal string).
+get_pstr :: Get.Get Name
+get_pstr = do
+  n <- fmap fromIntegral Get.getWord8
+  fmap Byte.decode_ascii (Get.getLazyByteString n)
 
--- | Read a 'Control'.
-read_control :: (Handle -> IO Int) -> Handle -> IO Control
-read_control read_i h = do
-  nm <- Byte.read_pstr h
-  ix <- read_i h
+-- | Get functions for Graphdef types, (str_f,i8_f,i16_f,i32_f,f32_f)
+type GET_F m = (m Name,m Int,m Int,m Int,m Double)
+
+-- | GET_F for binary .scsyndef files.
+binary_get_f :: GET_F Get.Get
+binary_get_f =
+  (get_pstr
+  ,fmap fromIntegral Get.getInt8
+  ,fmap fromIntegral Get.getInt16be
+  ,fmap fromIntegral Get.getInt32be
+  ,fmap realToFrac IEEE754.getFloat32be)
+
+-- | Get a 'Control'.
+get_control :: Monad m => (GET_F m,m Int) -> m Control
+get_control ((get_str,_,_,_,_),get_i) = do
+  nm <- get_str
+  ix <- get_i
   return (nm,ix)
 
--- | Read an 'Input'.
-read_input :: (Handle -> IO Int) -> Handle -> IO Input
-read_input read_i h = do
-  u <- read_i h
-  p <- read_i h
+-- | Get an 'Input'.
+get_input :: Monad m => m Int -> m Input
+get_input get_i = do
+  u <- get_i
+  p <- get_i
   return (Input u p)
 
--- | Read an 'output'.
-read_output :: Handle -> IO Output
-read_output = Byte.read_i8
-
--- | Read a 'UGen'.
-read_ugen :: (Handle -> IO Int) -> Handle -> IO UGen
-read_ugen read_i h = do
-  name <- Byte.read_pstr h
-  rate <- Byte.read_i8 h
-  number_of_inputs <- read_i h
-  number_of_outputs <- read_i h
-  special <- Byte.read_i16 h
-  inputs <- replicateM number_of_inputs (read_input read_i h)
-  outputs <- replicateM number_of_outputs (read_output h)
+-- | Get a 'UGen'
+get_ugen :: Monad m => (GET_F m,m Int) -> m UGen
+get_ugen ((get_str,get_i8,get_i16,_,_),get_i) = do
+  name <- get_str
+  rate <- get_i8
+  number_of_inputs <- get_i
+  number_of_outputs <- get_i
+  special <- get_i16
+  inputs <- replicateM number_of_inputs (get_input get_i)
+  outputs <- replicateM number_of_outputs get_i8
   return (name
          ,rate
          ,inputs
          ,outputs
          ,special)
 
--- | Read a 'Graphdef'. Ignores variants.
-read_graphdef :: Handle -> IO Graphdef
-read_graphdef h = do
-  magic <- fmap Byte.decode_ascii (L.hGet h 4)
-  version <- Byte.read_i32 h
-  let read_i =
+-- | Get a 'Graphdef'. Supports version 0|1 and version 2 files.  Ignores variants.
+get_graphdef :: Monad m => GET_F m -> m Graphdef
+get_graphdef c@(get_str,_,get_i16,get_i32,get_f32) = do
+  magic <- get_i32
+  version <- get_i32
+  let get_i =
           case version of
-            0 -> Byte.read_i16
-            2 -> Byte.read_i32
-            _ -> error ("read_graphdef: version not at {zero | two}: " ++ show version)
-  number_of_definitions <- Byte.read_i16 h
-  when (magic /= Datum.ascii "SCgf")
-       (error "read_graphdef: illegal magic string")
+            0 -> get_i16
+            1 -> get_i16 -- version one allows variants, which are not allowed by hsc3
+            2 -> get_i32
+            _ -> error ("get_graphdef: version not at {zero | one | two}: " ++ show version)
+  number_of_definitions <- get_i16
+  when (magic /= scgf_i32)
+       (error "get_graphdef: illegal magic string")
   when (number_of_definitions /= 1)
-       (error "read_graphdef: non unary graphdef file")
-  name <- Byte.read_pstr h
-  number_of_constants <- read_i h
-  constants <- replicateM number_of_constants (read_sample h)
-  number_of_control_defaults <- read_i h
-  control_defaults <- replicateM number_of_control_defaults (read_sample h)
-  number_of_controls <- read_i h
-  controls <- replicateM number_of_controls (read_control read_i h)
-  number_of_ugens <- read_i h
-  ugens <- replicateM number_of_ugens (read_ugen read_i h)
+       (error "get_graphdef: non unary graphdef file")
+  name <- get_str
+  number_of_constants <- get_i
+  constants <- replicateM number_of_constants get_f32
+  number_of_control_defaults <- get_i
+  control_defaults <- replicateM number_of_control_defaults get_f32
+  number_of_controls <- get_i
+  controls <- replicateM number_of_controls (get_control (c,get_i))
+  number_of_ugens <- get_i
+  ugens <- replicateM number_of_ugens (get_ugen (c,get_i))
   return (Graphdef name
                    constants
                    (zip controls control_defaults)
                    ugens)
 
+-- * READ
+
 {- | Read Graphdef from .scsyndef file.
 
 > dir = "/home/rohan/sw/rsc3-disassembler/scsyndef/"
@@ -172,16 +209,15 @@
 > pp "with-ctl.scsyndef"
 > pp "mce.scsyndef"
 > pp "mrg.scsyndef"
-
 -}
 read_graphdef_file :: FilePath -> IO Graphdef
 read_graphdef_file nm = do
-  h <- openFile nm ReadMode
-  g <- read_graphdef h
-  hClose h
-  return g
+  b <- L.readFile nm
+  return (Get.runGet (get_graphdef binary_get_f) b)
 
--- | Read scsyndef file and run 'graphdef_stat'.
+-- * STAT
+
+-- | 'read_graphdef_file' and run 'graphdef_stat'.
 scsyndef_stat :: FilePath -> IO String
 scsyndef_stat fn = do
   g <- read_graphdef_file fn
@@ -189,50 +225,80 @@
 
 -- * Encode (version zero)
 
--- | Pascal (length prefixed) encoding of string.
+-- | (join_f,str_f,i8_f,i16_f,i32_f,f32_f,com_f)
+type ENCODE_F t = ([t] -> t,Name -> t,Int -> t,Int -> t,Int -> t,Double -> t,String -> t)
+
+-- | 'ENCODE_F' for 'L.ByteString'
+enc_bytestring :: ENCODE_F L.ByteString
+enc_bytestring =
+  (L.concat,encode_pstr,Byte.encode_i8,Byte.encode_i16,Byte.encode_i32,encode_sample
+  ,const L.empty)
+
+-- | Pascal (length prefixed) encoding of 'Name'.
 encode_pstr :: Name -> L.ByteString
 encode_pstr = L.pack . Cast.str_pstr . Datum.ascii_to_string
 
+encode_input_f :: ENCODE_F t -> Input -> t
+encode_input_f (join_f,_,_,i16_f,_,_,_) (Input u p) = join_f (map i16_f [u,p])
+
 -- | Byte-encode 'Input'.
 encode_input :: Input -> L.ByteString
-encode_input (Input u p) = L.append (Byte.encode_i16 u) (Byte.encode_i16 p)
+encode_input = encode_input_f enc_bytestring
 
+encode_control_f :: ENCODE_F t -> Control -> t
+encode_control_f (join_f,str_f,_,i16_f,_,_,_) (nm,k) = join_f [str_f nm,i16_f k]
+
 -- | Byte-encode 'Control'.
 encode_control :: Control -> L.ByteString
-encode_control (nm,k) = L.concat [encode_pstr nm,Byte.encode_i16 k]
+encode_control = encode_control_f enc_bytestring
 
+encode_ugen_f :: ENCODE_F t -> UGen -> t
+encode_ugen_f enc (nm,r,i,o,s) =
+  let (join_f,str_f,i8_f,i16_f,_,_,com_f) = enc
+  in join_f [com_f "ugen-name",str_f nm
+            ,com_f "ugen-rate",i8_f r
+            ,com_f "ugen-number-of-inputs",i16_f (length i)
+            ,com_f "ugen-number-of-outputs",i16_f (length o)
+            ,com_f "ugen-special",i16_f s
+            ,com_f "ugen-inputs (ugen-index,port-index)",join_f (map (encode_input_f enc) i)
+            ,com_f "ugen-output-rates",join_f (map i8_f o)
+            ]
+
 -- | Byte-encode 'UGen'.
 encode_ugen :: UGen -> L.ByteString
-encode_ugen (nm,r,i,o,s) =
-    L.concat [encode_pstr nm
-             ,Byte.encode_i8 r
-             ,Byte.encode_i16 (length i)
-             ,Byte.encode_i16 (length o)
-             ,Byte.encode_i16 s
-             ,L.concat (map encode_input i)
-             ,L.concat (map Byte.encode_i8 o)]
+encode_ugen = encode_ugen_f enc_bytestring
 
 -- | Encode 'Sample' as 32-bit IEEE float.
 encode_sample :: Sample -> L.ByteString
 encode_sample = Byte.encode_f32 . realToFrac
 
+encode_graphdef_f :: ENCODE_F t -> Graphdef -> t
+encode_graphdef_f enc (Graphdef nm cs ks us) =
+    let (join_f,str_f,_,i16_f,i32_f,f32_f,com_f) = enc
+        (ks_ctl,ks_def) = unzip ks
+    in join_f [com_f "SCgf",i32_f scgf_i32
+              ,com_f "version",i32_f 0
+              ,com_f "number of graphs",i16_f 1
+              ,com_f "name",str_f nm
+              ,com_f "number-of-constants",i16_f (length cs)
+              ,com_f "constant-values",join_f (map f32_f cs)
+              ,com_f "number-of-controls",i16_f (length ks_def)
+              ,com_f "control-default-values",join_f (map f32_f ks_def)
+              ,com_f "number-of-controls",i16_f (length ks_ctl)
+              ,com_f "controls",join_f (map (encode_control_f enc) ks_ctl)
+              ,com_f "number-of-ugens",i16_f (length us)
+              ,join_f (map (encode_ugen_f enc) us)]
+
 -- | Encode 'Graphdef'.
 encode_graphdef :: Graphdef -> L.ByteString
-encode_graphdef (Graphdef nm cs ks us) =
-    let (ks_ctl,ks_def) = unzip ks
-    in L.concat [Byte.encode_ascii (Datum.ascii "SCgf")
-                ,Byte.encode_i32 0 -- version
-                ,Byte.encode_i16 1 -- number of graphs
-                ,encode_pstr nm
-                ,Byte.encode_i16 (length cs)
-                ,L.concat (map encode_sample cs)
-                ,Byte.encode_i16 (length ks_def)
-                ,L.concat (map encode_sample ks_def)
-                ,Byte.encode_i16 (length ks_ctl)
-                ,L.concat (map encode_control ks_ctl)
-                ,Byte.encode_i16 (length us)
-                ,L.concat (map encode_ugen us)]
+encode_graphdef = encode_graphdef_f enc_bytestring
 
+-- | "SCgf" encoded as 32-bit unsigned integer.
+--
+-- > Byte.decode_i32 (Byte.encode_ascii (Datum.ascii "SCgf"))
+scgf_i32 :: Num n => n
+scgf_i32 = 1396926310
+
 -- * IO
 
 -- | Write 'Graphdef' to indicated file.
@@ -251,11 +317,10 @@
 -- | Simple statistics printer for 'Graphdef'.
 graphdef_stat :: Graphdef -> String
 graphdef_stat (Graphdef nm cs ks us) =
-    let u_nm (sc3_nm,_,_,_,_) = Datum.ascii_to_string sc3_nm
-        f g = let h (x:xs) = (x,length (x:xs))
+    let f g = let h (x:xs) = (x,length (x:xs))
                   h [] = error "graphdef_stat"
               in show . map h . group . sort . map g
-        sq pp_f = intercalate "," (pp_f (map u_nm us))
+        sq pp_f = intercalate "," (pp_f (map ugen_name_op us))
     in unlines ["name                      : " ++ show nm
                ,"number of constants       : " ++ show (length cs)
                ,"number of controls        : " ++ show (length ks)
@@ -264,3 +329,35 @@
                ,"unit generator set        : " ++ sq (nub . sort)
                ,"unit generator sequence   : " ++ sq id]
 
+-- * Dump UGens
+
+-- | Pretty print UGen in the manner of SynthDef>>dumpUGens.
+ugen_dump_ugen_str :: [Sample] -> [UGen] -> UGen_Index -> UGen -> String
+ugen_dump_ugen_str c_sq u_sq ix u =
+  let in_brackets :: String -> String
+      in_brackets x = printf "[%s]" x
+      input_pp (Input i j) =
+        let ui = u_sq !! i
+        in if i >= 0
+           then if length (ugen_outputs ui) > 1
+                then printf "%d_%s:%d" i (ugen_name_op ui) j
+                else printf "%d_%s" i (ugen_name_op ui)
+           else printf "%f" (c_sq !! j)
+      inputs_pp = in_brackets . intercalate "," . map input_pp
+  in printf "%d_%s, %s, %s" ix (ugen_name_op u) (show (ugen_rate_enum u)) (inputs_pp (ugen_inputs u))
+
+-- | Print graphdef in format equivalent to SynthDef>>dumpUGens in SuperCollider
+graphdef_dump_ugens_str :: Graphdef -> [String]
+graphdef_dump_ugens_str (Graphdef _nm cs _ks us) = zipWith (ugen_dump_ugen_str cs us) [0..] us
+
+{- | 'putStrLn' of 'unlines' of 'graphdef_dump_ugens_str'
+
+> dir = "/home/rohan/sw/rsc3-disassembler/scsyndef/"
+> pp nm = read_graphdef_file (dir ++ nm) >>= graphdef_dump_ugens
+> pp "simple.scsyndef"
+> pp "with-ctl.scsyndef"
+> pp "mce.scsyndef"
+> pp "mrg.scsyndef"
+-}
+graphdef_dump_ugens :: Graphdef -> IO ()
+graphdef_dump_ugens = putStrLn . unlines . graphdef_dump_ugens_str
diff --git a/Sound/SC3/Server/Graphdef/Graph.hs b/Sound/SC3/Server/Graphdef/Graph.hs
--- a/Sound/SC3/Server/Graphdef/Graph.hs
+++ b/Sound/SC3/Server/Graphdef/Graph.hs
@@ -1,15 +1,16 @@
 -- | Transform 'Graph.U_Graph' to 'Graphdef.Graphdef'.
 module Sound.SC3.Server.Graphdef.Graph where
 
-import qualified Data.IntMap as M {- containers -}
 import Data.Maybe {- base -}
 
+import qualified Data.IntMap as M {- containers -}
+
 import qualified Sound.OSC.Datum as Datum {- hosc -}
 
-import qualified Sound.SC3.Common.Rate as Rate
-import qualified Sound.SC3.UGen.Graph as Graph
-import qualified Sound.SC3.UGen.Type as Type
-import qualified Sound.SC3.Server.Graphdef as Graphdef
+import qualified Sound.SC3.Common.Rate as Rate {- hsc3 -}
+import qualified Sound.SC3.UGen.Graph as Graph {- hsc3 -}
+import qualified Sound.SC3.UGen.Type as Type {- hsc3 -}
+import qualified Sound.SC3.Server.Graphdef as Graphdef {- hsc3 -}
 
 -- * Maps
 
diff --git a/Sound/SC3/Server/Graphdef/Read.hs b/Sound/SC3/Server/Graphdef/Read.hs
--- a/Sound/SC3/Server/Graphdef/Read.hs
+++ b/Sound/SC3/Server/Graphdef/Read.hs
@@ -3,35 +3,34 @@
 
 import Sound.OSC.Datum {- hosc -}
 
-import qualified Sound.SC3.Common.Rate as Rate
-import           Sound.SC3.Server.Graphdef as Graphdef
-import qualified Sound.SC3.UGen.Graph as Graph
-import qualified Sound.SC3.UGen.Type as Type
+import qualified Sound.SC3.Common.Rate as Rate {- hsc3 -}
+import qualified Sound.SC3.Server.Graphdef as Graphdef {- hsc3 -}
+import qualified Sound.SC3.UGen.Graph as Graph {- hsc3 -}
+import qualified Sound.SC3.UGen.Type as Type {- hsc3 -}
 
-control_to_node :: Graphdef -> Type.UID_t -> (Control,Type.Sample) -> Graph.U_Node
+control_to_node :: Graphdef.Graphdef -> Type.UID_t -> (Graphdef.Control,Type.Sample) -> Graph.U_Node
 control_to_node g z ((nm,ix),v) =
-    let z' = graphdef_control_nid g z
+    let z' = Graphdef.graphdef_control_nid g z
         nm' = ascii_to_string nm
     in Graph.U_Node_K z' Rate.KR (Just ix) nm' v Rate.K_KR Nothing
 
-input_to_from_port :: Graphdef -> Input -> Graph.From_Port
-input_to_from_port g (Input u p) =
+-- | Note: Graphs with multiple Control UGens are not accounted for.
+input_to_from_port :: Graphdef.Graphdef -> Graphdef.Input -> Graph.From_Port
+input_to_from_port g (Graphdef.Input u p) =
     if u == -1
-    then Graph.From_Port_C (graphdef_constant_nid g p)
-    else if input_is_control g (Input u p)
-         then if u /= 0
-              then error "multiple control UGens..."
-              else Graph.From_Port_K (graphdef_control_nid g p) Rate.K_KR
-         else let ugen = graphdef_ugens g !! u
-                  port = if length (ugen_outputs ugen) > 1
+    then Graph.From_Port_C (Graphdef.graphdef_constant_nid g p)
+    else if Graphdef.input_is_control g (Graphdef.Input u p)
+         then Graph.From_Port_K (Graphdef.graphdef_control_nid g p) Rate.K_KR
+         else let ugen = Graphdef.graphdef_ugens g !! u
+                  port = if length (Graphdef.ugen_outputs ugen) > 1
                          then Just p
                          else Nothing
-              in Graph.From_Port_U (graphdef_ugen_nid g u) port
+              in Graph.From_Port_U (Graphdef.graphdef_ugen_nid g u) port
 
-ugen_to_node :: Graphdef -> Type.UID_t -> UGen -> Graph.U_Node
+ugen_to_node :: Graphdef.Graphdef -> Type.UID_t -> Graphdef.UGen -> Graph.U_Node
 ugen_to_node g z u =
     let (name,rate,inputs,outputs,special) = u
-        z' = graphdef_ugen_nid g z
+        z' = Graphdef.graphdef_ugen_nid g z
         rate' = toEnum rate
         name' = ascii_to_string name
         inputs' = map (input_to_from_port g) inputs
@@ -39,12 +38,12 @@
         special' = Type.Special special
     in Graph.U_Node_U z' rate' name' inputs' outputs' special' (Type.UId z')
 
-graphdef_to_graph :: Graphdef -> (String,Graph.U_Graph)
+graphdef_to_graph :: Graphdef.Graphdef -> (String,Graph.U_Graph)
 graphdef_to_graph g =
-    let constants_nd = zipWith Graph.U_Node_C [0..] (graphdef_constants g)
-        controls_nd = zipWith (control_to_node g) [0 ..] (graphdef_controls g)
-        ugens_nd = zipWith (ugen_to_node g) [0 ..] (graphdef_ugens g)
-        nm = ascii_to_string (graphdef_name g)
+    let constants_nd = zipWith Graph.U_Node_C [0..] (Graphdef.graphdef_constants g)
+        controls_nd = zipWith (control_to_node g) [0 ..] (Graphdef.graphdef_controls g)
+        ugens_nd = zipWith (ugen_to_node g) [0 ..] (Graphdef.graphdef_ugens g)
+        nm = ascii_to_string (Graphdef.graphdef_name g)
         gr = Graph.U_Graph (-1) constants_nd controls_nd ugens_nd
     in (nm,gr) -- S.Synthdef nm gr
 
diff --git a/Sound/SC3/Server/Graphdef/Text.hs b/Sound/SC3/Server/Graphdef/Text.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/Server/Graphdef/Text.hs
@@ -0,0 +1,63 @@
+module Sound.SC3.Server.Graphdef.Text where
+
+import Control.Monad {- base -}
+import Data.Char {- base -}
+import Data.Functor.Identity {- base -}
+
+import qualified Numeric {- base -}
+
+import qualified Control.Monad.State as S {- mtl -}
+
+import qualified Sound.OSC.Datum as Datum {- hosc -}
+
+import Sound.SC3.Server.Graphdef {- hsc3 -}
+
+-- | * PRINT
+
+-- | Print string.  Strings must not have internal whitespace or semi-colons.
+print_string :: Datum.ASCII -> String
+print_string a =
+  let s = Datum.ascii_to_string a
+  in if any isSpace s || ';' `elem` s then error "print_string" else s
+
+-- | 'ENCODE_F' for plain text output.
+enc_text :: (String -> String) -> ENCODE_F String
+enc_text com_f =
+  (unwords . filter (not . null),print_string,show,show,show,\n -> Numeric.showFFloat Nothing n ""
+  ,com_f)
+
+{- | 'encode_graphdef_f' of 'enc_text' with optional semi-colon delimited comments.
+
+> dir = "/home/rohan/sw/rsc3-disassembler/scsyndef/"
+> pp nm = read_graphdef_file (dir ++ nm) >>= putStrLn . print_graphdef True
+> pp "simple.scsyndef"
+> pp "with-ctl.scsyndef"
+> pp "mce.scsyndef"
+> pp "mrg.scsyndef"
+-}
+print_graphdef :: Bool -> Graphdef -> String
+print_graphdef with_com =
+    let com_f = if with_com then \c -> concat ["\n; ",c,"\n"] else const ""
+    in encode_graphdef_f (enc_text com_f)
+
+-- * LIST INPUT
+
+-- | Read the next value from a list.
+list_read_f :: (t -> u) -> S.State [t] u
+list_read_f f = do
+  l <- S.get
+  when (null l) (error "list_read_f")
+  S.put (tail l)
+  return (f (head l))
+
+-- | GET_F for text representation of Graphdef.
+text_get_f :: GET_F (S.StateT [String] Identity)
+text_get_f = (list_read_f Datum.ascii,list_read_f read,list_read_f read,list_read_f read,list_read_f read)
+
+-- | Read text representation of Graphdef, as written by 'print_graphdef'.
+--
+-- > read_graphdef "1396926310 0 1 simple 2 0.0 440.0 0 0 2 SinOsc 2 2 1 0 -1 1 -1 0 2 Out 2 2 0 0 -1 0 0 0"
+read_graphdef :: String -> Graphdef
+read_graphdef txt =
+  let delete_comments = filter (\x -> not (null x) && (head x /= ';'))
+  in S.evalState (get_graphdef text_get_f) (concatMap words (delete_comments (lines txt)))
diff --git a/Sound/SC3/Server/NRT.hs b/Sound/SC3/Server/NRT.hs
--- a/Sound/SC3/Server/NRT.hs
+++ b/Sound/SC3/Server/NRT.hs
@@ -22,7 +22,7 @@
     in B.append l b
 
 -- | An 'NRT' score is a sequence of 'Bundle's.
-data NRT = NRT {nrt_bundles :: [Bundle]} deriving (Show)
+newtype NRT = NRT {nrt_bundles :: [Bundle]} deriving (Show)
 
 -- | Trivial NRT statistics.
 type NRT_STAT =
@@ -103,7 +103,7 @@
 OSC file name,
 input audio file name and input number of channels,
 output audio file name and output number of channels,
-sample rate,
+sample rate (int),
 sample format,
 further parameters (ie. ["-m","32768"]) to be inserted before the NRT -N option.
 
diff --git a/Sound/SC3/Server/Options.hs b/Sound/SC3/Server/Options.hs
--- a/Sound/SC3/Server/Options.hs
+++ b/Sound/SC3/Server/Options.hs
@@ -10,6 +10,10 @@
 sc3_opt_value :: SC3_OPT i -> i
 sc3_opt_value (_,_,v) = v
 
+-- | Default address string.
+sc3_addr_def :: String
+sc3_addr_def = "127.0.0.1"
+
 -- | Default port number, either a 'u' or a 't' option is required.
 sc3_port_def :: Num i => i
 sc3_port_def = 57110
@@ -30,6 +34,7 @@
   sc3_opt_port_def p :
   [('a',"number-of-audio-bus-channels",1024)
   ,('b',"number-of-sample-buffers",1024)
+  --,('B',"bind-to-address","127.0.0.1")
   ,('c',"number-of-control-bus-channels",16384)
   ,('D',"load-synthdefs?",1)
   ,('d',"max-number-of-synth-defs",1024)
diff --git a/Sound/SC3/Server/Param.hs b/Sound/SC3/Server/Param.hs
--- a/Sound/SC3/Server/Param.hs
+++ b/Sound/SC3/Server/Param.hs
@@ -1,4 +1,4 @@
--- * Synthesis parameters
+-- | Synthesis parameters
 module Sound.SC3.Server.Param where
 
 import Data.Function {- base -}
diff --git a/Sound/SC3/Server/Status.hs b/Sound/SC3/Server/Status.hs
--- a/Sound/SC3/Server/Status.hs
+++ b/Sound/SC3/Server/Status.hs
@@ -77,7 +77,7 @@
     case n of
       Query_Group k _ -> show k
       Query_Synth k nm c ->
-          let c' = unwords (map query_ctl_pp (fromMaybe [] c))
+          let c' = unwords (maybe [] (map query_ctl_pp) c)
           in show (k,nm,c')
 
 -- | Control (parameter) data may be given as names or indices and as
diff --git a/Sound/SC3/Server/Synthdef.hs b/Sound/SC3/Server/Synthdef.hs
--- a/Sound/SC3/Server/Synthdef.hs
+++ b/Sound/SC3/Server/Synthdef.hs
@@ -3,21 +3,21 @@
 
 import qualified Data.ByteString.Lazy as L {- bytestring -}
 
-import Sound.SC3.UGen.Graph
-import Sound.SC3.UGen.Help.Graph
-import Sound.SC3.UGen.Type
+import qualified Sound.SC3.UGen.Graph as UGen.Graph {- hsc3 -}
+import qualified Sound.SC3.UGen.Help.Graph as Help.Graph {- hsc3 -}
+import qualified Sound.SC3.UGen.Type as UGen {- hsc3 -}
 
-import qualified Sound.SC3.Server.Graphdef as Graphdef
-import qualified Sound.SC3.Server.Graphdef.Graph as Graph
-import qualified Sound.SC3.Server.Param as Param
+import qualified Sound.SC3.Server.Graphdef as Graphdef {- hsc3 -}
+import qualified Sound.SC3.Server.Graphdef.Graph as Graph {- hsc3 -}
+import qualified Sound.SC3.Server.Param as Param {- hsc3 -}
 
 -- | A named unit generator graph.
 data Synthdef = Synthdef {synthdefName :: String
-                         ,synthdefUGen :: UGen}
+                         ,synthdefUGen :: UGen.UGen}
                 deriving (Eq,Show)
 
 -- | Alias for 'Synthdef'.
-synthdef :: String -> UGen -> Synthdef
+synthdef :: String -> UGen.UGen -> Synthdef
 synthdef = Synthdef
 
 {- | The SC3 /default/ instrument 'Synthdef', see 'default_ugen_graph'.
@@ -29,7 +29,7 @@
 
 -}
 defaultSynthdef :: Synthdef
-defaultSynthdef = synthdef "default" default_ugen_graph
+defaultSynthdef = synthdef "default" Help.Graph.default_ugen_graph
 
 -- | The SC3 /default/ sample (buffer) playback instrument 'Synthdef',
 -- see 'default_sampler_ugen_graph'.
@@ -39,22 +39,29 @@
 defaultSampler :: Bool -> Synthdef
 defaultSampler use_gate =
     let nm = "default-sampler-" ++ if use_gate then "gate" else "fixed"
-    in synthdef nm (default_sampler_ugen_graph use_gate)
+    in synthdef nm (Help.Graph.default_sampler_ugen_graph use_gate)
 
 -- | 'ugen_to_graph' of 'synthdefUGen'.
-synthdefGraph :: Synthdef -> U_Graph
-synthdefGraph = ugen_to_graph . synthdefUGen
+synthdefGraph :: Synthdef -> UGen.Graph.U_Graph
+synthdefGraph = UGen.Graph.ugen_to_graph . synthdefUGen
 
 -- | Parameter names at 'Synthdef'.
 --
 -- > synthdefParam defaultSynthdef == [("amp",0.1),("pan",0),("gate",1),("freq",440),("out",0)]
 synthdefParam :: Synthdef -> Param.Param
-synthdefParam = map (\n -> (u_node_k_name n,u_node_k_default n)) . ug_controls . synthdefGraph
+synthdefParam =
+  map (\n -> (UGen.Graph.u_node_k_name n,UGen.Graph.u_node_k_default n)) .
+  UGen.Graph.ug_controls .
+  synthdefGraph
 
 -- | 'graph_to_graphdef' at 'Synthdef'.
 synthdef_to_graphdef :: Synthdef -> Graphdef.Graphdef
-synthdef_to_graphdef (Synthdef nm u) = Graph.graph_to_graphdef nm (ugen_to_graph u)
+synthdef_to_graphdef (Synthdef nm u) = Graph.graph_to_graphdef nm (UGen.Graph.ugen_to_graph u)
 
+-- | 'graph_to_graphdef' at 'Synthdef'.
+ugen_to_graphdef :: UGen.UGen -> Graphdef.Graphdef
+ugen_to_graphdef = synthdef_to_graphdef . Synthdef "anonymous"
+
 -- | Encode 'Synthdef' as a binary data stream.
 synthdefData :: Synthdef -> L.ByteString
 synthdefData = Graphdef.encode_graphdef . synthdef_to_graphdef
@@ -69,21 +76,25 @@
 synthdefWrite_dir dir = Graphdef.graphdefWrite_dir dir . synthdef_to_graphdef
 
 -- | 'graph_stat_ln' of 'synth'.
-synthstat_ln :: UGen -> [String]
-synthstat_ln = ug_stat_ln . ugen_to_graph
+synthstat_ln :: UGen.UGen -> [String]
+synthstat_ln = UGen.Graph.ug_stat_ln . UGen.Graph.ugen_to_graph
 
 -- | 'unlines' of 'synthstat_ln'.
-synthstat :: UGen -> String
+synthstat :: UGen.UGen -> String
 synthstat = unlines . synthstat_ln
 
 -- | 'putStrLn' of 'synthstat'.
 --
 -- > synthstat_wr Sound.SC3.UGen.Help.Graph.default_ugen_graph
-synthstat_wr :: UGen -> IO ()
+synthstat_wr :: UGen.UGen -> IO ()
 synthstat_wr = putStrLn . synthstat
 
 -- | Variant without UGen sequence.
 --
 -- > putStrLn $ synthstat_concise (default_sampler_ugen_graph True)
-synthstat_concise :: UGen -> String
+synthstat_concise :: UGen.UGen -> String
 synthstat_concise = unlines . reverse . drop 1 . reverse . synthstat_ln
+
+-- | 'graphdef_dump_ugens' of 'ugen_to_graphdef'
+ugen_dump_ugens :: UGen.UGen -> IO ()
+ugen_dump_ugens = Graphdef.graphdef_dump_ugens . ugen_to_graphdef
diff --git a/Sound/SC3/Server/Transport/FD.hs b/Sound/SC3/Server/Transport/FD.hs
--- a/Sound/SC3/Server/Transport/FD.hs
+++ b/Sound/SC3/Server/Transport/FD.hs
@@ -92,7 +92,7 @@
 
 -- | 'withSC3' of 'nrt_play'
 nrt_audition :: NRT -> IO ()
-nrt_audition sc = withSC3 (\fd -> nrt_play fd sc)
+nrt_audition sc = withSC3 (`nrt_play` sc)
 
 -- * Audible
 
@@ -157,27 +157,27 @@
   let f m = let (_,nf,nc,_) = unpack_b_info_err m
                 ix = (0,nf * nc)
                 deinterleave = transpose . Split.chunksOf nc
-            in liftM deinterleave (b_getn1_data_segment fd n b ix)
+            in fmap deinterleave (b_getn1_data_segment fd n b ix)
   sendMessage fd (b_query1 b)
   waitReply fd "/b_info" >>= f
 
 -- | 'head' of 'b_fetch'.
 b_fetch1 :: Transport t => t -> Int -> Int -> IO [Double]
-b_fetch1 fd n b = liftM head (b_fetch fd n b)
+b_fetch1 fd n b = fmap head (b_fetch fd n b)
 
 -- * Status
 
 -- | Collect server status information.
 serverStatus :: Transport t => t -> IO [String]
-serverStatus = liftM statusFormat . serverStatusData
+serverStatus = fmap statusFormat . serverStatusData
 
 -- | Read nominal sample rate of server.
 serverSampleRateNominal :: Transport t => t -> IO Double
-serverSampleRateNominal = liftM (extractStatusField 7) . serverStatusData
+serverSampleRateNominal = fmap (extractStatusField 7) . serverStatusData
 
 -- | Read actual sample rate of server.
 serverSampleRateActual :: Transport t => t -> IO Double
-serverSampleRateActual = liftM (extractStatusField 8) . serverStatusData
+serverSampleRateActual = fmap (extractStatusField 8) . serverStatusData
 
 -- | Retrieve status data from server.
 serverStatusData :: Transport t => t -> IO [Datum]
diff --git a/Sound/SC3/Server/Transport/Monad.hs b/Sound/SC3/Server/Transport/Monad.hs
--- a/Sound/SC3/Server/Transport/Monad.hs
+++ b/Sound/SC3/Server/Transport/Monad.hs
@@ -2,18 +2,19 @@
 module Sound.SC3.Server.Transport.Monad where
 
 import Control.Monad {- base -}
-import qualified Data.ByteString.Lazy as L {- bytestring -}
 import Data.List {- base -}
-import qualified Data.List.Split as Split {- split -}
 import Data.Maybe {- base -}
-import qualified Data.Tree as Tree {- containers -}
-import qualified Safe {- safe -}
 import System.Directory {- directory -}
 import System.FilePath {- filepath -}
 
+import qualified Data.ByteString.Lazy as L {- bytestring -}
+import qualified Data.List.Split as Split {- split -}
+import qualified Data.Tree as Tree {- containers -}
+import qualified Safe {- safe -}
+
 import Sound.OSC {- hosc -}
 
-import Sound.SC3.Server.Command
+import qualified Sound.SC3.Server.Command as Command
 import qualified Sound.SC3.Server.Command.Generic as Generic
 import qualified Sound.SC3.Server.Enum as Enum
 import qualified Sound.SC3.Server.Graphdef as Graphdef
@@ -21,9 +22,8 @@
 import qualified Sound.SC3.Server.Options as Options
 import qualified Sound.SC3.Server.Status as Status
 import qualified Sound.SC3.Server.Synthdef as Synthdef
-
-import Sound.SC3.UGen.Bindings.Composite (wrapOut)
-import Sound.SC3.UGen.Type (UGen)
+import qualified Sound.SC3.UGen.Bindings.Composite as Composite
+import qualified Sound.SC3.UGen.Type as UGen
 
 {-
 import qualified Control.Monad.IO.Class as M {- transformers -}
@@ -43,30 +43,35 @@
 
 -- | If 'isAsync' then 'async_' else 'sendMessage'.
 maybe_async :: DuplexOSC m => Message -> m ()
-maybe_async m = if isAsync m then async_ m else sendMessage m
+maybe_async m = if Command.isAsync m then async_ m else sendMessage m
 
 -- | Variant that timestamps synchronous messages.
 maybe_async_at :: DuplexOSC m => Time -> Message -> m ()
 maybe_async_at t m =
-    if isAsync m
+    if Command.isAsync m
     then async_ m
     else sendBundle (bundle t [m])
 
 -- | Local host (ie. @127.0.0.1@) at port 'sc3_port_def'
-sc3_default_udp :: IO UDP
-sc3_default_udp = openUDP "127.0.0.1" Options.sc3_port_def
+sc3_default_udp :: (String,Int)
+sc3_default_udp = (Options.sc3_addr_def,Options.sc3_port_def)
 
 -- | Maximum packet size, in bytes, that can be sent over UDP.
+--   However, see also <https://tools.ietf.org/html/rfc2675>
 sc3_udp_limit :: Num n => n
 sc3_udp_limit = 65507
 
--- | Bracket @SC3@ communication, ie. 'withTransport' 'sc3_default_udp'.
+-- | Bracket @SC3@ communication at indicated host and port.
+withSC3At :: (String,Int) -> Connection UDP a -> IO a
+withSC3At (h,p) = withTransport (openUDP h p)
+
+-- | Bracket @SC3@ communication, ie. 'withSC3At' 'sc3_default_udp'.
 --
 -- > import Sound.SC3.Server.Command
 --
 -- > withSC3 (sendMessage status >> waitReply "/status.reply")
 withSC3 :: Connection UDP a -> IO a
-withSC3 = withTransport sc3_default_udp
+withSC3 = withSC3At sc3_default_udp
 
 -- | 'void' of 'withSC3'.
 withSC3_ :: Connection UDP a -> IO ()
@@ -76,30 +81,42 @@
 withSC3_tm :: Double -> Connection UDP a -> IO (Maybe a)
 withSC3_tm tm = timeout_r tm . withSC3
 
+-- | Run /f/ at /k/ scsynth servers with sequential port numbers starting at 'Options.sc3_port_def'.
+--
+-- > withSC3At_seq sc3_default_udp 2 (sendMessage status >> waitReply "/status.reply")
+withSC3At_seq :: (String,Int) -> Int -> Connection UDP a -> IO [a]
+withSC3At_seq (h,p) k f = do
+  let mk_udp i = openUDP h (p + i)
+  mapM (\i -> withTransport (mk_udp i) f) [0 .. k - 1]
+
+-- | 'void' of 'withSC3_seq'.
+withSC3At_seq_ :: (String,Int) -> Int -> Connection UDP a -> IO ()
+withSC3At_seq_ loc k = void . withSC3At_seq loc k
+
 -- * Server control
 
 -- | Free all nodes ('g_freeAll') at group @1@.
 stop :: SendOSC m => m ()
-stop = sendMessage (g_freeAll [1])
+stop = sendMessage (Command.g_freeAll [1])
 
 -- * Composite
 
 -- | Runs 'clearSched' and then frees and re-creates groups @1@ and @2@.
 reset :: SendOSC m => m ()
 reset =
-    let m = [clearSched
-            ,n_free [1,2]
-            ,g_new [(1,Enum.AddToHead,0),(2,Enum.AddToTail,0)]]
+    let m = [Command.clearSched
+            ,Command.n_free [1,2]
+            ,Command.g_new [(1,Enum.AddToHead,0),(2,Enum.AddToTail,0)]]
     in sendBundle (bundle immediately m)
 
 -- | (node-id,add-action,group-id,parameters)
-type Play_Opt = (Node_Id,Enum.AddAction,Group_Id,[(String,Double)])
+type Play_Opt = (Command.Node_Id,Enum.AddAction,Command.Group_Id,[(String,Double)])
 
 -- | Make 's_new' message to play 'Graphdef.Graphdef'.
 play_graphdef_msg :: Play_Opt -> Graphdef.Graphdef -> Message
 play_graphdef_msg (nid,act,gid,param) g =
     let nm = ascii_to_string (Graphdef.graphdef_name g)
-    in s_new nm nid act gid param
+    in Command.s_new nm nid act gid param
 
 -- | If the graph size is less than 'sc3_udp_limit' encode and send
 -- using 'd_recv_bytes', else write to temporary directory and read
@@ -112,8 +129,8 @@
       by = Graphdef.encode_graphdef g
       sz = L.length by
   if sz < sc3_udp_limit
-    then async (d_recv_bytes by)
-    else liftIO (Graphdef.graphdefWrite fn g) >> async (d_load fn)
+    then async (Command.d_recv_bytes by)
+    else liftIO (Graphdef.graphdefWrite fn g) >> async (Command.d_load fn)
 
 -- | Send 'd_recv' and 's_new' messages to scsynth.
 playGraphdef :: Transport m => Play_Opt -> Graphdef.Graphdef -> m ()
@@ -124,11 +141,11 @@
 playSynthdef opt = playGraphdef opt . Synthdef.synthdef_to_graphdef
 
 -- | Send an /anonymous/ instrument definition using 'playSynthdef'.
-playUGen :: Transport m => Play_Opt -> UGen -> m ()
+playUGen :: Transport m => Play_Opt -> UGen.UGen -> m ()
 playUGen loc =
     playSynthdef loc .
     Synthdef.synthdef "Anonymous" .
-    wrapOut Nothing
+    Composite.wrapOut Nothing
 
 -- * NRT
 
@@ -161,7 +178,7 @@
 nrt_play_reorder s = do
   let (i,r) = NRT.nrt_span (<= 0) s
       i' = concatMap bundleMessages i
-      (a,b) = partition_async i'
+      (a,b) = Command.partition_async i'
   mapM_ async a
   t <- liftIO time
   mapM_ (run_bundle t) (Bundle 0 b : r)
@@ -185,25 +202,37 @@
 instance Audible Synthdef.Synthdef where
     play_at = playSynthdef
 
-instance Audible UGen where
+instance Audible UGen.UGen where
     play_at = playUGen
 
--- | 'withSC3' of 'play_at'.
-audition_at :: Audible e => Play_Opt -> e -> IO ()
-audition_at k = withSC3 . play_at k
+-- | 'withSC3At' of 'play_at'.
+audition_at :: Audible e => (String,Int) -> Play_Opt -> e -> IO ()
+audition_at loc opt = withSC3At loc . play_at opt
 
--- | Variant where /id/ is @-1@.
+-- | 'withSC3_seq' of 'play_at'.
+audition_at_seq :: Audible e => (String,Int) -> Play_Opt -> Int -> e -> IO ()
+audition_at_seq loc opt k = withSC3At_seq_ loc k . play_at opt
+
+-- | Default 'Play_Opt', ie. (-1,addToHead,1,[])
+def_play_opt :: Play_Opt
+def_play_opt = (-1,Enum.AddToHead,1,[])
+
+-- | 'audition_at' 'def_play_opt'
 audition :: Audible e => e -> IO ()
-audition = audition_at (-1,Enum.AddToHead,1,[])
+audition = audition_at sc3_default_udp def_play_opt
 
+-- | 'audition_at_seq' 'def_play_opt'
+audition_seq :: Audible e => Int -> e -> IO ()
+audition_seq = audition_at_seq sc3_default_udp def_play_opt
+
 -- * Notifications
 
 -- | Turn on notifications, run /f/, turn off notifications, return result.
 withNotifications :: DuplexOSC m => m a -> m a
 withNotifications f = do
-  async_ (notify True)
+  async_ (Command.notify True)
   r <- f
-  async_ (notify False)
+  async_ (Command.notify False)
   return r
 
 -- * Buffer & control & node variants.
@@ -213,9 +242,9 @@
 -- > withSC3_tm 1.0 (b_getn1_data 0 (0,5))
 b_getn1_data :: DuplexOSC m => Int -> (Int,Int) -> m [Double]
 b_getn1_data b s = do
-  let f m = let (_,_,_,r) = unpack_b_setn_err m in r
-  sendMessage (b_getn1 b s)
-  liftM f (waitReply "/b_setn")
+  let f m = let (_,_,_,r) = Command.unpack_b_setn_err m in r
+  sendMessage (Command.b_getn1 b s)
+  fmap f (waitReply "/b_setn")
 
 -- | Variant of 'b_getn1_data' that segments individual 'b_getn'
 -- messages to /n/ elements.
@@ -224,25 +253,25 @@
 b_getn1_data_segment :: DuplexOSC m =>
                         Int -> Int -> (Int,Int) -> m [Double]
 b_getn1_data_segment n b (i,j) = do
-  let ix = b_indices n j i
+  let ix = Command.b_indices n j i
   d <- mapM (b_getn1_data b) ix
   return (concat d)
 
 -- | Variant of 'b_getn1_data_segment' that gets the entire buffer.
 b_fetch :: DuplexOSC m => Int -> Int -> m [[Double]]
 b_fetch n b = do
-  let f m = let (_,nf,nc,_) = unpack_b_info_err m
+  let f m = let (_,nf,nc,_) = Command.unpack_b_info_err m
                 ix = (0,nf * nc)
                 deinterleave = transpose . Split.chunksOf nc
-            in liftM deinterleave (b_getn1_data_segment n b ix)
-  sendMessage (b_query1 b)
+            in fmap deinterleave (b_getn1_data_segment n b ix)
+  sendMessage (Command.b_query1 b)
   waitReply "/b_info" >>= f
 
 -- | First channel of 'b_fetch', errors if there is no data.
 --
 -- > withSC3 (b_fetch1 512 123456789)
 b_fetch1 :: DuplexOSC m => Int -> Int -> m [Double]
-b_fetch1 n b = liftM (Safe.headNote "b_fetch1: no data") (b_fetch n b)
+b_fetch1 n b = fmap (Safe.headNote "b_fetch1: no data") (b_fetch n b)
 
 -- | Combination of 'b_query1_unpack' and 'b_fetch'.
 b_fetch_hdr :: Transport m => Int -> Int -> m ((Int,Int,Int,Double),[[Double]])
@@ -254,44 +283,44 @@
 -- | 'b_info_unpack_err' of 'b_query1'.
 b_query1_unpack_generic :: (DuplexOSC m,Num n,Fractional r) => Int -> m (n,n,n,r)
 b_query1_unpack_generic n = do
-  sendMessage (b_query1 n)
+  sendMessage (Command.b_query1 n)
   q <- waitReply "/b_info"
   return (Generic.unpack_b_info_err q)
 
 -- | Type specialised 'b_query1_unpack_generic'.
 --
 -- > withSC3 (b_query1_unpack 0)
-b_query1_unpack :: DuplexOSC m => Buffer_Id -> m (Int,Int,Int,Double)
+b_query1_unpack :: DuplexOSC m => Command.Buffer_Id -> m (Int,Int,Int,Double)
 b_query1_unpack = b_query1_unpack_generic
 
 -- | Variant of 'c_getn1' that waits for the reply and unpacks the data.
-c_getn1_data :: DuplexOSC m => (Int,Int) -> m [Double]
+c_getn1_data :: (DuplexOSC m,Floating t) => (Int,Int) -> m [t]
 c_getn1_data s = do
   let f d = case d of
               Int32 _:Int32 _:x -> mapMaybe datum_floating x
               _ -> error "c_getn1_data"
-  sendMessage (c_getn1 s)
-  liftM f (waitDatum "/c_setn")
+  sendMessage (Command.c_getn1 s)
+  fmap f (waitDatum "/c_setn")
 
 -- | Apply /f/ to result of 'n_query'.
-n_query1_unpack_f :: DuplexOSC m => (Message -> t) -> Node_Id -> m t
+n_query1_unpack_f :: DuplexOSC m => (Message -> t) -> Command.Node_Id -> m t
 n_query1_unpack_f f n = do
-  sendMessage (n_query [n])
+  sendMessage (Command.n_query [n])
   r <- waitReply "/n_info"
   return (f r)
 
 -- | Variant of 'n_query' that waits for and unpacks the reply.
-n_query1_unpack :: DuplexOSC m => Node_Id -> m (Maybe (Int,Int,Int,Int,Int,Maybe (Int,Int)))
-n_query1_unpack = n_query1_unpack_f unpack_n_info
+n_query1_unpack :: DuplexOSC m => Command.Node_Id -> m (Maybe (Int,Int,Int,Int,Int,Maybe (Int,Int)))
+n_query1_unpack = n_query1_unpack_f Command.unpack_n_info
 
 -- | Variant of 'n_query1_unpack' that returns plain (un-lifted) result.
-n_query1_unpack_plain :: DuplexOSC m => Node_Id -> m [Int]
-n_query1_unpack_plain = n_query1_unpack_f unpack_n_info_plain
+n_query1_unpack_plain :: DuplexOSC m => Command.Node_Id -> m [Int]
+n_query1_unpack_plain = n_query1_unpack_f Command.unpack_n_info_plain
 
 -- | Variant of 'g_queryTree' that waits for and unpacks the reply.
-g_queryTree1_unpack :: DuplexOSC m => Group_Id -> m Status.Query_Node
+g_queryTree1_unpack :: DuplexOSC m => Command.Group_Id -> m Status.Query_Node
 g_queryTree1_unpack n = do
-  sendMessage (g_queryTree [(n,True)])
+  sendMessage (Command.g_queryTree [(n,True)])
   r <- waitReply "/g_queryTree.reply"
   return (Status.queryTree (messageDatum r))
 
@@ -301,30 +330,30 @@
 --
 -- > withSC3 serverStatus >>= mapM putStrLn
 serverStatus :: DuplexOSC m => m [String]
-serverStatus = liftM Status.statusFormat serverStatusData
+serverStatus = fmap Status.statusFormat serverStatusData
 
 -- | Collect server status information.
 --
 -- > withSC3 server_status_concise >>= putStrLn
 server_status_concise :: DuplexOSC m => m String
-server_status_concise = liftM Status.status_format_concise serverStatusData
+server_status_concise = fmap Status.status_format_concise serverStatusData
 
 -- | Read nominal sample rate of server.
 --
 -- > withSC3 serverSampleRateNominal
 serverSampleRateNominal :: DuplexOSC m => m Double
-serverSampleRateNominal = liftM (Status.extractStatusField 7) serverStatusData
+serverSampleRateNominal = fmap (Status.extractStatusField 7) serverStatusData
 
 -- | Read actual sample rate of server.
 --
 -- > withSC3 serverSampleRateActual
 serverSampleRateActual :: DuplexOSC m => m Double
-serverSampleRateActual = liftM (Status.extractStatusField 8) serverStatusData
+serverSampleRateActual = fmap (Status.extractStatusField 8) serverStatusData
 
 -- | Retrieve status data from server.
 serverStatusData :: DuplexOSC m => m [Datum]
 serverStatusData = do
-  sendMessage status
+  sendMessage Command.status
   waitDatum "/status.reply"
 
 -- * Tree
@@ -336,4 +365,4 @@
 serverTree = do
   qt <- g_queryTree1_unpack 0
   let tr = Status.queryTree_rt qt
-  return (["***** SuperCollider Server Tree *****",Tree.drawTree (fmap Status.query_node_pp tr)])
+  return ["***** SuperCollider Server Tree *****",Tree.drawTree (fmap Status.query_node_pp tr)]
diff --git a/Sound/SC3/UGen.hs b/Sound/SC3/UGen.hs
--- a/Sound/SC3/UGen.hs
+++ b/Sound/SC3/UGen.hs
@@ -4,9 +4,11 @@
 import Sound.SC3.UGen.Analysis as U
 import Sound.SC3.UGen.Envelope as U
 import Sound.SC3.UGen.Enum as U
+import Sound.SC3.UGen.Event as U
 import Sound.SC3.UGen.Help.Graph as U
 import Sound.SC3.UGen.Math as U
 import Sound.SC3.UGen.Math.Composite as U
+import Sound.SC3.UGen.MCE as U
 import Sound.SC3.UGen.Name as U
 import Sound.SC3.UGen.Optimise as U
 import Sound.SC3.UGen.Type as U
diff --git a/Sound/SC3/UGen/Analysis.hs b/Sound/SC3/UGen/Analysis.hs
--- a/Sound/SC3/UGen/Analysis.hs
+++ b/Sound/SC3/UGen/Analysis.hs
@@ -3,8 +3,9 @@
 
 import Data.List {- base -}
 
-import qualified Sound.SC3.UGen.Bindings.DB as DB
-import qualified Sound.SC3.UGen.MCE as MCE
+import qualified Sound.SC3.Common.Rate as Rate {- hsc3 -}
+import qualified Sound.SC3.UGen.Bindings.DB as DB {- hsc3 -}
+import qualified Sound.SC3.UGen.MCE as MCE {- hsc3 -}
 import Sound.SC3.UGen.Type
 
 -- | UGen primitive set.
@@ -65,3 +66,18 @@
 -- | 'pv_track_buffer' then 'buffer_nframes'.
 pv_track_nframes :: UGen -> Either String UGen
 pv_track_nframes u = pv_track_buffer u >>= Right . buffer_nframes
+
+{- | UGen is required to be the root node of complete graph.  This
+     function returns the name of the output UGen (ie. "Out" or an
+     allowed variant) and the input to that UGen.  It allows
+     multiple-root graphs.  It is in some sense the inverse of
+     'wrapOut'.
+-}
+ugen_remove_out_node :: UGen -> (String,UGen)
+ugen_remove_out_node u =
+  let err = error "ugen_remove_out_node?"
+      assert_is_output x = if x `elem` ["Out","ReplaceOut","OffsetOut"] then x else err
+  in case u of
+       Primitive_U (Primitive Rate.AR nm (_bus:inputs) [] _special _uid) -> (assert_is_output nm,mce inputs)
+       MRG_U (MRG lhs rhs) -> let (nm,res) = ugen_remove_out_node lhs in (nm,MRG_U (MRG res rhs))
+       _ -> err
diff --git a/Sound/SC3/UGen/Bindings/Composite.hs b/Sound/SC3/UGen/Bindings/Composite.hs
--- a/Sound/SC3/UGen/Bindings/Composite.hs
+++ b/Sound/SC3/UGen/Bindings/Composite.hs
@@ -27,6 +27,10 @@
         s = setBuf' b xs 0
     in mrg2 b s
 
+-- | balance2 with MCE input.
+balanceStereo :: UGen -> UGen -> UGen -> UGen
+balanceStereo sig pos level = let (x,y) = unmce2 sig in balance2 x y pos level
+
 -- | 24db/oct rolloff - 4th order resonant Low Pass Filter
 bLowPass4 :: UGen -> UGen -> UGen -> UGen
 bLowPass4 i f rq =
@@ -101,6 +105,10 @@
 exprange :: UGen -> UGen -> UGen -> UGen
 exprange l r s = linExp s (-1) 1 l r
 
+-- | Variant of `exprange` with arguments to make writing post-fix nicer.
+in_exprange :: UGen -> (UGen, UGen) -> UGen
+in_exprange s (l,r) = exprange l r s
+
 -- | Variant FFT constructor with default values for hop size (0.5),
 -- window type (0), active status (1) and window size (0).
 fft' :: UGen -> UGen -> UGen
@@ -126,6 +134,17 @@
         h = hilbert i
     in mix (h * o)
 
+{- | UGen function to re-trigger an EnvGen envelope.
+     Inputs are /gate/ (as set at EnvGen) and /reset/.
+     The four state logic is: (1,0)->1 (1,1)->-1 (0,1)->0 (0,0)->0.
+     If the gate input to EnvGen.kr is -1 the envelope ramps to zero in one control period.
+     The reset input sequence 0,1,0 when the gate is open produces (1,-1,1), which resets the envelope.
+
+> map (uncurry gateReset) [(1,0),(1,1),(0,1),(0,0)] == [1,-1,0,0]
+-}
+gateReset :: Num a => a -> a -> a
+gateReset gt tr = gt - (gt * tr * 2)
+
 -- | Variant of 'hilbert' using FFT (with a delay) for better results.
 -- Buffer should be 2048 or 1024.
 -- 2048 = better results, more delay.
@@ -242,20 +261,56 @@
 mix :: UGen -> UGen
 mix = sum_opt . mceChannels
 
+-- | Mix divided by number of inputs.
+mceMean :: UGen -> UGen
+mceMean e = let p = mceChannels e in sum_opt p / constant (length p)
+
 -- | Mix variant, sum to n channels.
 mixN :: Int -> UGen -> UGen
 mixN n u =
     let xs = transpose (Split.chunksOf n (mceChannels u))
     in mce (map sum_opt xs)
 
+-- | Construct an MCE array of UGens.
+mceFill :: Integral n => Int -> (n -> UGen) -> UGen
+mceFill n f = mce (map f [0 .. fromIntegral n - 1])
+
+-- | Type specialised mceFill
+mceFillInt :: Int -> (Int -> UGen) -> UGen
+mceFillInt = mceFill
+
+-- | Construct a list of ID UGens.
+listFill_z :: (Integral n, ID z, Enum z) => z -> Int -> (z -> n -> UGen) -> [UGen]
+listFill_z z n f = zipWith f [z..] [0 .. fromIntegral n - 1]
+
+-- | 'mce' of 'listFill_z'
+mceFill_z :: (Integral n, ID z, Enum z) => z -> Int -> (z -> n -> UGen) -> UGen
+mceFill_z z n = mce . listFill_z z n
+
 -- | Construct and sum a set of UGens.
 mixFill :: Integral n => Int -> (n -> UGen) -> UGen
-mixFill n f = mix (mce (map f [0 .. fromIntegral n - 1]))
+mixFill n = mix . mceFill n
 
+-- | Type specialised mixFill
+mixFillInt :: Int -> (Int -> UGen) -> UGen
+mixFillInt = mixFill
+
+-- | Type specialised mixFill
+mixFillUGen :: Int -> (UGen -> UGen) -> UGen
+mixFillUGen = mixFill
+
+-- | Construct and sum a set of ID UGens.
+mixFill_z :: (Integral n, ID z, Enum z) => z -> Int -> (z -> n -> UGen) -> UGen
+mixFill_z z n = mix . mceFill_z z n
+
 -- | Monad variant on mixFill.
 mixFillM :: (Integral n,Monad m) => Int -> (n -> m UGen) -> m UGen
-mixFillM n f = liftM sum_opt (mapM f [0 .. fromIntegral n - 1])
+mixFillM n f = fmap sum_opt (mapM f [0 .. fromIntegral n - 1])
 
+-- | Apply the ID UGen processor /f/ /k/ times in sequence to /i/, ie. for k=4 /f (f (f (f i)))/.
+useq_z :: (ID z, Enum z) => z -> Int -> (z -> UGen -> UGen) -> UGen -> UGen
+useq_z z k f i = if k <= 0 then i else useq_z (succ z) (k - 1) f (f z i)
+
 -- | Variant that is randomly pressed.
 mouseButton' :: Rate -> UGen -> UGen -> UGen -> UGen
 mouseButton' rt l r tm =
@@ -296,8 +351,8 @@
     in mce (interleave m p)
 
 -- | Calculate size of accumulation buffer given FFT and IR sizes.
-pc_calcAccumSize :: Int -> Int -> Int
-pc_calcAccumSize fft_size ir_length =
+partConv_calcAccumSize :: Int -> Int -> Int
+partConv_calcAccumSize fft_size ir_length =
     let partition_size = fft_size `div` 2
         num_partitions = (ir_length `div` partition_size) + 1
     in fft_size * num_partitions
@@ -360,6 +415,10 @@
 rand2M :: UId m => UGen -> m UGen
 rand2M n = randM (negate n) n
 
+-- | rotate2 with MCE input.
+rotateStereo :: UGen -> UGen -> UGen
+rotateStereo sig pos = let (x,y) = unmce2 sig in rotate2 x y pos
+
 -- | RMS variant of 'runningSum'.
 runningSumRMS :: UGen -> UGen -> UGen
 runningSumRMS z n = sqrt (runningSum (z * z) n * recip n)
@@ -404,19 +463,19 @@
 splay i s l c lc =
     let n = max 2 (fromIntegral (fromMaybe 1 (mceDegree i)))
         m = n - 1
-        p = map ( (+ (-1.0)) . (* (2 / m)) ) [0 .. m]
+        p = map ((+ (-1.0)) . (* (2 / m))) [0 .. m]
         a = if lc then sqrt (1 / n) else 1
-    in mix (pan2 i (mce p * s + c) 1) * l * a
+    in mix (pan2 i (s * mce p + c) 1) * l * a
 
 -- | Optimised UGen sum function.
 sum_opt :: [UGen] -> UGen
 sum_opt = sum_opt_f sum3 sum4
 
--- | Single tap into a delayline
-tap :: Int -> UGen -> UGen -> UGen
-tap numChannels bufnum delaytime =
+-- | Single tap into a delayline.  AR only.
+tap :: Int -> Rate -> UGen -> UGen -> UGen
+tap numChannels rt bufnum delaytime =
     let n = delaytime * negate sampleRate
-    in playBuf numChannels AR bufnum 1 0 n Loop DoNothing
+    in playBuf numChannels rt bufnum 1 0 n Loop DoNothing
 
 -- | Randomly select one of several inputs on trigger.
 tChoose :: ID m => m -> UGen -> UGen -> UGen
@@ -428,6 +487,18 @@
   r <- tiRandM 0 (constant (length (mceChannels a) - 1)) t
   return (select r a)
 
+-- | Triggered Line, implemented in terms of EnvGen.
+tLine :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+tLine rt start end dur trig_ =
+  let p = envCoord [(0,0),(0,start),(dur,end)] 1 1 EnvLin
+  in envGen rt trig_ 1 0 1 DoNothing p
+
+-- | Triggered xLine, implemented in terms of EnvGen.
+tXLine :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+tXLine rt start end dur trig_ =
+  let p = envCoord [(0,0),(0,start),(dur,end)] 1 1 EnvExp
+  in envGen rt trig_ 1 0 1 DoNothing p
+
 -- | Triangle wave as sum of /n/ sines.
 -- For partial n, amplitude is (1 / square n) and phase is pi at every other odd partial.
 triAS :: Int -> UGen -> UGen
@@ -455,11 +526,13 @@
 unpackFFT :: UGen -> Int -> Int -> Int -> UGen -> [UGen]
 unpackFFT c nf from to w = map (\i -> unpack1FFT c (constant nf) (constant i) w) [from .. to]
 
--- | VarLag in terms of envGen
-varLag_env :: UGen -> UGen -> Envelope_Curve UGen -> UGen -> UGen
-varLag_env in_ time curve start =
+-- | VarLag in terms of envGen.  Note: in SC3 curvature and warp are separate arguments.
+varLag_env :: UGen -> UGen -> Envelope_Curve UGen -> Maybe UGen -> UGen
+varLag_env in_ time warp start =
   let rt = rateOf in_
-      e = Envelope [start,in_] [time] [curve] Nothing Nothing 0
+      start_ = fromMaybe in_ start
+      e = Envelope [start_,in_] [time] [warp] Nothing Nothing 0
+      -- e[6] = curve; e[7] = curvature;
       time_ch = if rateOf time == IR then 0 else changed time 0
       tr = changed in_ 0 + time_ch + impulse rt 0 0
   in envGen rt tr 1 0 1 DoNothing e
@@ -474,10 +547,9 @@
 -}
 wrapOut :: Maybe Double -> UGen -> UGen
 wrapOut fadeTime z =
-    let bus = control KR "out" 0
-    in if isSink z
-       then z
-       else out bus (z * maybe 1 makeFadeEnv fadeTime)
+  if isSink z
+  then z
+  else out (control KR "out" 0) (maybe z ((* z) . makeFadeEnv) fadeTime)
 
 -- * wslib
 
@@ -500,10 +572,10 @@
                     then demand trigger' 0 startPos
                     else startPos
         lag'' = 1 / lag'
-        s = map
-            (\(on',r) -> let p = playBuf nc AR bufnum r on' startPos' loop DoNothing
-                         in p * sqrt (slew on' lag'' lag''))
-            (zip on rate')
+        s = zipWith
+            (\on' r -> let p = playBuf nc AR bufnum r on' startPos' loop DoNothing
+                       in p * sqrt (slew on' lag'' lag''))
+            on rate'
     in sum_opt s
 
 -- * adc
diff --git a/Sound/SC3/UGen/Bindings/Composite/External.hs b/Sound/SC3/UGen/Bindings/Composite/External.hs
--- a/Sound/SC3/UGen/Bindings/Composite/External.hs
+++ b/Sound/SC3/UGen/Bindings/Composite/External.hs
@@ -1,15 +1,151 @@
 -- | Common unit generator graphs.
 module Sound.SC3.UGen.Bindings.Composite.External where
 
-import Sound.SC3.Common.Math
-import Sound.SC3.Common.Rate
-import Sound.SC3.UGen.Type
+import Data.List {- base -}
+import Data.Maybe {- base -}
 
+import Sound.SC3.Common.Math {- hsc3 -}
+import Sound.SC3.Common.Rate {- hsc3 -}
+import Sound.SC3.UGen.Type {- hsc3 -}
+import Sound.SC3.UGen.UGen {- hsc3 -}
+
 import qualified Sound.SC3.UGen.Bindings.DB.External as External
 
 -- | FM7 variant where input matrices are not in MCE form.
 fm7_mx :: [[UGen]] -> [[UGen]] -> UGen
 fm7_mx ctlMatrix modMatrix = External.fm7 AR (mce (concat ctlMatrix)) (mce (concat modMatrix))
+
+{- | greyhole re-orders parameters as well as unpacking the input signal.
+
+in1=0.0 in2=0.0 damping=0.0 delayTime=2.0 diffusion=0.5 feedback=0.9 moddepth=0.1 modfreq=2.0 size=1.0
+in              delayTime=2.0 damping=0.0 size=1.0 diffusion=0.7 feedback=0.9 modDepth=0.1 modFreq=2.0
+-}
+greyhole :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+greyhole i delayTime damping size diffusion feedback modDepth modFreq =
+  let (i1,i2) = unmce2 i
+  in External.greyholeRaw i1 i2 damping delayTime diffusion feedback modDepth modFreq size
+
+-- | Association list giving names for MiBraids modes.
+miBraids_mode_dict :: Num n => [(n,String)]
+miBraids_mode_dict =
+  [(0,"CSAW")
+  ,(1,"MORPH")
+  ,(2,"SAW_SQUARE")
+  ,(3,"SINE_TRIANGLE")
+  ,(4,"BUZZ")
+  ,(5,"SQUARE_SUB")
+  ,(6,"SAW_SUB")
+  ,(7,"SQUARE_SYNC")
+  ,(8,"SAW_SYNC")
+  ,(9,"TRIPLE_SAW")
+  ,(10,"TRIPLE_SQUARE")
+  ,(11,"TRIPLE_TRIANGLE")
+  ,(12,"TRIPLE_SINE")
+  ,(13,"TRIPLE_RING_MOD")
+  ,(14,"SAW_SWARM")
+  ,(15,"SAW_COMB")
+  ,(16,"TOY")
+  ,(17,"DIGITAL_FILTER_LP")
+  ,(18,"DIGITAL_FILTER_PK")
+  ,(19,"DIGITAL_FILTER_BP")
+  ,(20,"DIGITAL_FILTER_HP")
+  ,(21,"VOSIM")
+  ,(22,"VOWEL")
+  ,(23,"VOWEL_FOF")
+  ,(24,"HARMONICS")
+  ,(25,"FM")
+  ,(26,"FEEDBACK_FM")
+  ,(27,"CHAOTIC_FEEDBACK_FM")
+  ,(28,"PLUCKED")
+  ,(29,"BOWED")
+  ,(30,"BLOWN")
+  ,(31,"FLUTED")
+  ,(32,"STRUCK_BELL")
+  ,(33,"STRUCK_DRUM")
+  ,(34,"KICK")
+  ,(35,"CYMBAL")
+  ,(36,"SNARE")
+  ,(37,"WAVETABLES")
+  ,(38,"WAVE_MAP")
+  ,(39,"WAVE_LINE")
+  ,(40,"WAVE_PARAPHONIC")
+  ,(41,"FILTERED_NOISE")
+  ,(42,"TWIN_PEAKS_NOISE")
+  ,(43,"CLOCKED_NOISE")
+  ,(44,"GRANULAR_CLOUD")
+  ,(45,"PARTICLE_NOISE")
+  ,(46,"DIGITAL_MODULATION")
+  ,(47,"QUESTION_MARK")]
+
+-- | Reverse lookup of 'miBraids_mode_dict'.
+miBraids_mode_maybe :: Num n => String -> Maybe n
+miBraids_mode_maybe x = fmap fst (find ((== x) . snd) miBraids_mode_dict)
+
+-- | 'error' of 'miBraids_mode_maybe'
+miBraids_mode :: Num n => String -> n
+miBraids_mode = fromMaybe (error "miBraids_mode?") . miBraids_mode_maybe
+
+-- | Association list giving names for MiClouds modes.
+miClouds_mode_dict :: Num n => [(n,String)]
+miClouds_mode_dict =
+  [(0,"GRANULAR")
+  ,(1,"STRETCH")
+  ,(2,"LOOPING_DELAY")
+  ,(3,"SPECTRAL")]
+
+-- | Reverse lookup of 'miClouds_mode_dict'.
+miClouds_mode_maybe :: Num n => String -> Maybe n
+miClouds_mode_maybe x = fmap fst (find ((== x) . snd) miClouds_mode_dict)
+
+-- | 'error' of 'miClouds_mode_maybe'
+miClouds_mode :: Num n => String -> n
+miClouds_mode = fromMaybe (error "miClouds_mode?") . miClouds_mode_maybe
+
+-- | Association list giving names for MiPlaits modes.
+miPlaits_mode_dict :: Num n => [(n,String)]
+miPlaits_mode_dict =
+  [(0,"virtual_analog")
+  ,(1,"waveshaping")
+  ,(2,"fm")
+  ,(3,"grain")
+  ,(4,"additive")
+  ,(5,"wavetable")
+  ,(6,"chord")
+  ,(7,"speech")
+  ,(8,"swarm")
+  ,(9,"noise")
+  ,(10,"particle")
+  ,(11,"string")
+  ,(12,"modal")
+  ,(13,"bass_drum")
+  ,(14,"snare_drum")
+  ,(15,"hi_hat")]
+
+-- | Reverse lookup of 'miPlaits_mode_dict'.
+miPlaits_mode_maybe :: Num n => String -> Maybe n
+miPlaits_mode_maybe x = fmap fst (find ((== x) . snd) miPlaits_mode_dict)
+
+-- | 'error' of 'miPlaits_mode_maybe'
+miPlaits_mode :: Num n => String -> n
+miPlaits_mode = fromMaybe (error "miPlaits_mode?") . miPlaits_mode_maybe
+
+-- | Association list giving names for MiPlaits modes.
+miRings_mode_dict :: Num n => [(n,String)]
+miRings_mode_dict =
+  [(0,"MODAL_RESONATOR")
+  ,(1,"SYMPATHETIC_STRING")
+  ,(2,"MODULATED/INHARMONIC_STRING")
+  ,(3,"2-OP_FM_VOICE")
+  ,(4,"SYMPATHETIC_STRING_QUANTIZED")
+  ,(5,"STRING_AND_REVERB")]
+
+-- | Reverse lookup of 'miRings_mode_dict'.
+miRings_mode_maybe :: Num n => String -> Maybe n
+miRings_mode_maybe x = fmap fst (find ((== x) . snd) miRings_mode_dict)
+
+-- | 'error' of 'miRings_mode_maybe'
+miRings_mode :: Num n => String -> n
+miRings_mode = fromMaybe (error "miRings_mode?") . miRings_mode_maybe
 
 -- | pulse signal as difference of two 'sawDPW' signals.
 pulseDPW :: Rate -> UGen -> UGen -> UGen
diff --git a/Sound/SC3/UGen/Bindings/DB.hs b/Sound/SC3/UGen/Bindings/DB.hs
--- a/Sound/SC3/UGen/Bindings/DB.hs
+++ b/Sound/SC3/UGen/Bindings/DB.hs
@@ -264,7 +264,7 @@
 --
 --  BufRd [KR,AR] bufnum=0.0 phase=0.0 loop=1.0 interpolation=2.0;    NC INPUT: True, ENUMERATION INPUTS: 2=Loop, 3=Interpolation
 bufRd :: Int -> Rate -> UGen -> UGen -> Loop UGen -> Interpolation UGen -> UGen
-bufRd numChannels rate bufnum phase loop interpolation = mkUGen Nothing [KR,AR] (Left rate) "BufRd" [bufnum,phase,(from_loop loop),(from_interpolation interpolation)] Nothing numChannels (Special 0) NoId
+bufRd numChannels rate bufnum phase loop interpolation = mkUGen Nothing [KR,AR] (Left rate) "BufRd" [bufnum,phase,from_loop loop,from_interpolation interpolation] Nothing numChannels (Special 0) NoId
 
 -- | Buffer sample rate.
 --
@@ -282,7 +282,7 @@
 --
 --  BufWr [KR,AR] bufnum=0.0 phase=0.0 loop=1.0 *inputArray=0.0;    MCE=1, FILTER: TRUE, REORDERS INPUTS: [3,0,1,2], ENUMERATION INPUTS: 2=Loop
 bufWr :: UGen -> UGen -> Loop UGen -> UGen -> UGen
-bufWr bufnum phase loop inputArray = mkUGen Nothing [KR,AR] (Right [3]) "BufWr" [bufnum,phase,(from_loop loop)] (Just [inputArray]) 1 (Special 0) NoId
+bufWr bufnum phase loop inputArray = mkUGen Nothing [KR,AR] (Right [3]) "BufWr" [bufnum,phase,from_loop loop] (Just [inputArray]) 1 (Special 0) NoId
 
 -- | Chorusing wavetable oscillator.
 --
@@ -414,13 +414,13 @@
 --
 --  Dbufrd [DR] bufnum=0.0 phase=0.0 loop=1.0;    ENUMERATION INPUTS: 2=Loop, DEMAND/NONDET
 dbufrd :: ID a => a -> UGen -> UGen -> Loop UGen -> UGen
-dbufrd z bufnum phase loop = mkUGen Nothing [DR] (Left DR) "Dbufrd" [bufnum,phase,(from_loop loop)] Nothing 1 (Special 0) (toUId z)
+dbufrd z bufnum phase loop = mkUGen Nothing [DR] (Left DR) "Dbufrd" [bufnum,phase,from_loop loop] Nothing 1 (Special 0) (toUId z)
 
 -- | Buffer write demand ugen
 --
 --  Dbufwr [DR] bufnum=0.0 phase=0.0 loop=1.0 input=0.0;    REORDERS INPUTS: [3,0,1,2], ENUMERATION INPUTS: 3=Loop, DEMAND/NONDET
 dbufwr :: ID a => a -> UGen -> UGen -> UGen -> Loop UGen -> UGen
-dbufwr z bufnum phase loop input = mkUGen Nothing [DR] (Left DR) "Dbufwr" [bufnum,phase,loop,(from_loop input)] Nothing 1 (Special 0) (toUId z)
+dbufwr z bufnum phase loop input = mkUGen Nothing [DR] (Left DR) "Dbufwr" [bufnum,phase,loop,from_loop input] Nothing 1 (Special 0) (toUId z)
 
 -- | Constrain a demand-rate stream to a given sum
 --
@@ -504,7 +504,7 @@
 --
 --  DemandEnvGen [KR,AR] level=0.0 dur=0.0 shape=1.0 curve=0.0 gate=1.0 reset=1.0 levelScale=1.0 levelBias=0.0 timeScale=1.0 doneAction=0.0;    ENUMERATION INPUTS: 9=DoneAction
 demandEnvGen :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> DoneAction UGen -> UGen
-demandEnvGen rate level dur shape curve gate_ reset levelScale levelBias timeScale doneAction = mkUGen Nothing [KR,AR] (Left rate) "DemandEnvGen" [level,dur,shape,curve,gate_,reset,levelScale,levelBias,timeScale,(from_done_action doneAction)] Nothing 1 (Special 0) NoId
+demandEnvGen rate level dur shape curve gate_ reset levelScale levelBias timeScale doneAction = mkUGen Nothing [KR,AR] (Left rate) "DemandEnvGen" [level,dur,shape,curve,gate_,reset,levelScale,levelBias,timeScale,from_done_action doneAction] Nothing 1 (Special 0) NoId
 
 -- | Search a buffer for a value
 --
@@ -516,7 +516,7 @@
 --
 --  DetectSilence [KR,AR] in=0.0 amp=1.0e-4 time=0.1 doneAction=0.0;    FILTER: TRUE, ENUMERATION INPUTS: 3=DoneAction
 detectSilence :: UGen -> UGen -> UGen -> DoneAction UGen -> UGen
-detectSilence in_ amp time doneAction = mkUGen Nothing [KR,AR] (Right [0]) "DetectSilence" [in_,amp,time,(from_done_action doneAction)] Nothing 1 (Special 0) NoId
+detectSilence in_ amp time doneAction = mkUGen Nothing [KR,AR] (Right [0]) "DetectSilence" [in_,amp,time,from_done_action doneAction] Nothing 1 (Special 0) NoId
 
 -- | Demand rate geometric series UGen.
 --
@@ -534,7 +534,7 @@
 --
 --  DiskIn [AR] bufnum=0.0 loop=0.0;    NC INPUT: True, ENUMERATION INPUTS: 1=Loop
 diskIn :: Int -> UGen -> Loop UGen -> UGen
-diskIn numChannels bufnum loop = mkUGen Nothing [AR] (Left AR) "DiskIn" [bufnum,(from_loop loop)] Nothing numChannels (Special 0) NoId
+diskIn numChannels bufnum loop = mkUGen Nothing [AR] (Left AR) "DiskIn" [bufnum,from_loop loop] Nothing numChannels (Special 0) NoId
 
 -- | Record to a soundfile to disk.
 --
@@ -636,7 +636,7 @@
 --
 --  Duty [KR,AR] dur=1.0 reset=0.0 doneAction=0.0 level=1.0;    REORDERS INPUTS: [0,1,3,2], ENUMERATION INPUTS: 2=DoneAction
 duty :: Rate -> UGen -> UGen -> DoneAction UGen -> UGen -> UGen
-duty rate dur reset doneAction level = mkUGen Nothing [KR,AR] (Left rate) "Duty" [dur,reset,(from_done_action doneAction),level] Nothing 1 (Special 0) NoId
+duty rate dur reset doneAction level = mkUGen Nothing [KR,AR] (Left rate) "Duty" [dur,reset,from_done_action doneAction,level] Nothing 1 (Special 0) NoId
 
 -- | Demand rate white noise random generator.
 --
@@ -662,7 +662,7 @@
 --
 --  EnvGen [KR,AR] gate=1.0 levelScale=1.0 levelBias=0.0 timeScale=1.0 doneAction=0.0 *envelope=0.0;    MCE=1, REORDERS INPUTS: [5,0,1,2,3,4,5], ENUMERATION INPUTS: 4=DoneAction, 5=Envelope
 envGen :: Rate -> UGen -> UGen -> UGen -> UGen -> DoneAction UGen -> Envelope UGen -> UGen
-envGen rate gate_ levelScale levelBias timeScale doneAction envelope_ = mkUGen Nothing [KR,AR] (Left rate) "EnvGen" [gate_,levelScale,levelBias,timeScale,(from_done_action doneAction)] (Just [(envelope_to_ugen envelope_)]) 1 (Special 0) NoId
+envGen rate gate_ levelScale levelBias timeScale doneAction envelope_ = mkUGen Nothing [KR,AR] (Left rate) "EnvGen" [gate_,levelScale,levelBias,timeScale,from_done_action doneAction] (Just [envelope_to_ugen envelope_]) 1 (Special 0) NoId
 
 -- | Exponential single random number generator.
 --
@@ -884,7 +884,7 @@
 --
 --  IEnvGen [KR,AR] index=0.0 *envelope=0.0;    MCE=1, REORDERS INPUTS: [1,0], ENUMERATION INPUTS: 1=Envelope
 iEnvGen :: Rate -> UGen -> Envelope UGen -> UGen
-iEnvGen rate index_ envelope_ = mkUGen Nothing [KR,AR] (Left rate) "IEnvGen" [index_] (Just [(envelope_to_ugen envelope_)]) 1 (Special 0) NoId
+iEnvGen rate index_ envelope_ = mkUGen Nothing [KR,AR] (Left rate) "IEnvGen" [index_] (Just [envelope_to_ienvgen_ugen envelope_]) 1 (Special 0) NoId
 
 -- | Inverse Fast Fourier Transform
 --
@@ -1034,7 +1034,7 @@
 --
 --  LFGauss [KR,AR] duration=1.0 width=0.1 iphase=0.0 loop=1.0 doneAction=0.0;    ENUMERATION INPUTS: 3=Loop, 4=DoneAction
 lfGauss :: Rate -> UGen -> UGen -> UGen -> Loop UGen -> DoneAction UGen -> UGen
-lfGauss rate duration width iphase loop doneAction = mkUGen Nothing [KR,AR] (Left rate) "LFGauss" [duration,width,iphase,(from_loop loop),(from_done_action doneAction)] Nothing 1 (Special 0) NoId
+lfGauss rate duration width iphase loop doneAction = mkUGen Nothing [KR,AR] (Left rate) "LFGauss" [duration,width,iphase,from_loop loop,from_done_action doneAction] Nothing 1 (Special 0) NoId
 
 -- | Step noise
 --
@@ -1225,20 +1225,20 @@
 -- | Two channel linear crossfade.
 --
 --  LinXFade2 [KR,AR] inA=0.0 inB=0.0 pan=0.0 level=1.0;    FILTER: TRUE, PSUEDO INPUTS: [3]
-linXFade2 :: UGen -> UGen -> UGen -> UGen -> UGen
-linXFade2 inA inB pan level = mkUGen Nothing [KR,AR] (Right [0,1]) "LinXFade2" [inA,inB,pan,level] Nothing 1 (Special 0) NoId
+linXFade2 :: UGen -> UGen -> UGen -> UGen
+linXFade2 inA inB pan = mkUGen Nothing [KR,AR] (Right [0,1]) "LinXFade2" [inA,inB,pan] Nothing 1 (Special 0) NoId
 
 -- | Line generator.
 --
 --  Line [KR,AR] start=0.0 end=1.0 dur=1.0 doneAction=0.0;    ENUMERATION INPUTS: 3=DoneAction
 line :: Rate -> UGen -> UGen -> UGen -> DoneAction UGen -> UGen
-line rate start end dur doneAction = mkUGen Nothing [KR,AR] (Left rate) "Line" [start,end,dur,(from_done_action doneAction)] Nothing 1 (Special 0) NoId
+line rate start end dur doneAction = mkUGen Nothing [KR,AR] (Left rate) "Line" [start,end,dur,from_done_action doneAction] Nothing 1 (Special 0) NoId
 
 -- | Simple linear envelope generator.
 --
 --  Linen [KR] gate=1.0 attackTime=1.0e-2 susLevel=1.0 releaseTime=1.0 doneAction=0.0;    ENUMERATION INPUTS: 4=DoneAction
 linen :: UGen -> UGen -> UGen -> UGen -> DoneAction UGen -> UGen
-linen gate_ attackTime susLevel releaseTime doneAction = mkUGen Nothing [KR] (Left KR) "Linen" [gate_,attackTime,susLevel,releaseTime,(from_done_action doneAction)] Nothing 1 (Special 0) NoId
+linen gate_ attackTime susLevel releaseTime doneAction = mkUGen Nothing [KR] (Left KR) "Linen" [gate_,attackTime,susLevel,releaseTime,from_done_action doneAction] Nothing 1 (Special 0) NoId
 
 -- | Allocate a buffer local to the synth
 --
@@ -1303,8 +1303,8 @@
 -- | Minimum difference of two values in modulo arithmetics
 --
 --  ModDif [IR,KR,AR] x=0.0 y=0.0 mod=1.0
-modDif :: Rate -> UGen -> UGen -> UGen -> UGen
-modDif rate x y mod_ = mkUGen Nothing [IR,KR,AR] (Left rate) "ModDif" [x,y,mod_] Nothing 1 (Special 0) NoId
+modDif :: UGen -> UGen -> UGen -> UGen
+modDif x y mod_ = mkUGen Nothing [IR,KR,AR] (Right [0]) "ModDif" [x,y,mod_] Nothing 1 (Special 0) NoId
 
 -- | Moog VCF implementation, designed by Federico Fontana
 --
@@ -1328,13 +1328,13 @@
 --
 --  MouseX [KR] minval=0.0 maxval=1.0 warp=0.0 lag=0.2;    ENUMERATION INPUTS: 2=Warp
 mouseX :: Rate -> UGen -> UGen -> Warp UGen -> UGen -> UGen
-mouseX rate minval maxval warp lag_ = mkUGen Nothing [KR] (Left rate) "MouseX" [minval,maxval,(from_warp warp),lag_] Nothing 1 (Special 0) NoId
+mouseX rate minval maxval warp lag_ = mkUGen Nothing [KR] (Left rate) "MouseX" [minval,maxval,from_warp warp,lag_] Nothing 1 (Special 0) NoId
 
 -- | Cursor tracking UGen.
 --
 --  MouseY [KR] minval=0.0 maxval=1.0 warp=0.0 lag=0.2;    ENUMERATION INPUTS: 2=Warp
 mouseY :: Rate -> UGen -> UGen -> Warp UGen -> UGen -> UGen
-mouseY rate minval maxval warp lag_ = mkUGen Nothing [KR] (Left rate) "MouseY" [minval,maxval,(from_warp warp),lag_] Nothing 1 (Special 0) NoId
+mouseY rate minval maxval warp lag_ = mkUGen Nothing [KR] (Left rate) "MouseY" [minval,maxval,from_warp warp,lag_] Nothing 1 (Special 0) NoId
 
 -- | Sum of uniform distributions.
 --
@@ -1510,13 +1510,13 @@
 --  PV_HainsworthFoote [KR,AR] maxSize=0.0
 pv_HainsworthFoote :: UGen -> UGen
 pv_HainsworthFoote maxSize = mkUGen Nothing [KR,AR] (Left KR) "PV_HainsworthFoote" [maxSize] Nothing 1 (Special 0) NoId
--}
 
 -- | FFT feature detector for onset detection.
 --
 --  PV_JensenAndersen [KR,AR] maxSize=0.0
 pv_JensenAndersen :: UGen -> UGen
 pv_JensenAndersen maxSize = mkUGen Nothing [KR,AR] (Left KR) "PV_JensenAndersen" [maxSize] Nothing 1 (Special 0) NoId
+-}
 
 -- | Pass bins which are a local maximum.
 --
@@ -1738,7 +1738,7 @@
 --
 --  PlayBuf [KR,AR] bufnum=0.0 rate=1.0 trigger=1.0 startPos=0.0 loop=0.0 doneAction=0.0;    NC INPUT: True, ENUMERATION INPUTS: 4=Loop, 5=DoneAction
 playBuf :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> Loop UGen -> DoneAction UGen -> UGen
-playBuf numChannels rate bufnum rate_ trigger startPos loop doneAction = mkUGen Nothing [KR,AR] (Left rate) "PlayBuf" [bufnum,rate_,trigger,startPos,(from_loop loop),(from_done_action doneAction)] Nothing numChannels (Special 0) NoId
+playBuf numChannels rate bufnum rate_ trigger startPos loop doneAction = mkUGen Nothing [KR,AR] (Left rate) "PlayBuf" [bufnum,rate_,trigger,startPos,from_loop loop,from_done_action doneAction] Nothing numChannels (Special 0) NoId
 
 -- | A Karplus-Strong UGen
 --
@@ -1836,7 +1836,7 @@
 --
 --  RecordBuf [KR,AR] bufnum=0.0 offset=0.0 recLevel=1.0 preLevel=0.0 run=1.0 loop=1.0 trigger=1.0 doneAction=0.0 *inputArray=0.0;    MCE=1, REORDERS INPUTS: [8,0,1,2,3,4,5,6,7], ENUMERATION INPUTS: 5=Loop, 7=DoneAction
 recordBuf :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> Loop UGen -> UGen -> DoneAction UGen -> UGen -> UGen
-recordBuf rate bufnum offset recLevel preLevel run loop trigger doneAction inputArray = mkUGen Nothing [KR,AR] (Left rate) "RecordBuf" [bufnum,offset,recLevel,preLevel,run,(from_loop loop),trigger,(from_done_action doneAction)] (Just [inputArray]) 1 (Special 0) NoId
+recordBuf rate bufnum offset recLevel preLevel run loop trigger doneAction inputArray = mkUGen Nothing [KR,AR] (Left rate) "RecordBuf" [bufnum,offset,recLevel,preLevel,run,from_loop loop,trigger,from_done_action doneAction] (Just [inputArray]) 1 (Special 0) NoId
 
 -- | Send signal to a bus, overwriting previous contents.
 --
@@ -1932,7 +1932,7 @@
 --
 --  SetResetFF [KR,AR] trig=0.0 reset=0.0;    FILTER: TRUE
 setResetFF :: UGen -> UGen -> UGen
-setResetFF trig_ reset = mkUGen Nothing [KR,AR] (Right [0]) "SetResetFF" [trig_,reset] Nothing 1 (Special 0) NoId
+setResetFF trig_ reset = mkUGen Nothing [KR,AR] (Right [0,1]) "SetResetFF" [trig_,reset] Nothing 1 (Special 0) NoId
 
 -- | Wave shaper.
 --
@@ -2070,7 +2070,7 @@
 --
 --  TDuty [KR,AR] dur=1.0 reset=0.0 doneAction=0.0 level=1.0 gapFirst=0.0;    REORDERS INPUTS: [0,1,3,2,4], ENUMERATION INPUTS: 2=DoneAction
 tDuty :: Rate -> UGen -> UGen -> DoneAction UGen -> UGen -> UGen -> UGen
-tDuty rate dur reset doneAction level gapFirst = mkUGen Nothing [KR,AR] (Left rate) "TDuty" [dur,reset,(from_done_action doneAction),level,gapFirst] Nothing 1 (Special 0) NoId
+tDuty rate dur reset doneAction level gapFirst = mkUGen Nothing [KR,AR] (Left rate) "TDuty" [dur,reset,from_done_action doneAction,level,gapFirst] Nothing 1 (Special 0) NoId
 
 -- | Triggered exponential random number generator.
 --
@@ -2148,7 +2148,7 @@
 --
 --  VDiskIn [AR] bufnum=0.0 rate=1.0 loop=0.0 sendID=0.0;    NC INPUT: True, ENUMERATION INPUTS: 2=Loop
 vDiskIn :: Int -> UGen -> UGen -> Loop UGen -> UGen -> UGen
-vDiskIn numChannels bufnum rate_ loop sendID = mkUGen Nothing [AR] (Left AR) "VDiskIn" [bufnum,rate_,(from_loop loop),sendID] Nothing numChannels (Special 0) NoId
+vDiskIn numChannels bufnum rate_ loop sendID = mkUGen Nothing [AR] (Left AR) "VDiskIn" [bufnum,rate_,from_loop loop,sendID] Nothing numChannels (Special 0) NoId
 
 -- | Variable wavetable oscillator.
 --
@@ -2214,7 +2214,7 @@
 --
 --  XLine [KR,AR] start=1.0 end=2.0 dur=1.0 doneAction=0.0;    ENUMERATION INPUTS: 3=DoneAction
 xLine :: Rate -> UGen -> UGen -> UGen -> DoneAction UGen -> UGen
-xLine rate start end dur doneAction = mkUGen Nothing [KR,AR] (Left rate) "XLine" [start,end,dur,(from_done_action doneAction)] Nothing 1 (Special 0) NoId
+xLine rate start end dur doneAction = mkUGen Nothing [KR,AR] (Left rate) "XLine" [start,end,dur,from_done_action doneAction] Nothing 1 (Special 0) NoId
 
 -- | Send signal to a bus, crossfading with previous contents.
 --
diff --git a/Sound/SC3/UGen/Bindings/DB/External.hs b/Sound/SC3/UGen/Bindings/DB/External.hs
--- a/Sound/SC3/UGen/Bindings/DB/External.hs
+++ b/Sound/SC3/UGen/Bindings/DB/External.hs
@@ -1,2468 +1,2580 @@
--- | SC3 external (sce3-plugins) UGen bindings (auto-generated).
-module Sound.SC3.UGen.Bindings.DB.External where
-
-import Sound.SC3.Common.Rate
-import Sound.SC3.Common.UId
-import Sound.SC3.UGen.Type
-import Sound.SC3.UGen.UGen
-
--- | (Undocumented class)
---
---  A2B [AR] a=0.0 b=0.0 c=0.0 d=0.0
-a2B :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-a2B rate a b c d = mkUGen Nothing [AR] (Left rate) "A2B" [a,b,c,d] Nothing 4 (Special 0) NoId
-
--- | Emulator of the AY (aka YM) soundchip, used in Spectrum/Atari
---
---  AY [AR] tonea=1777.0 toneb=1666.0 tonec=1555.0 noise=1.0 control=7.0 vola=15.0 volb=15.0 volc=15.0 envfreq=4.0 envstyle=1.0 chiptype=0.0
-ay :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-ay tonea toneb tonec noise control_ vola volb volc envfreq envstyle chiptype = mkUGen Nothing [AR] (Left AR) "AY" [tonea,toneb,tonec,noise,control_,vola,volb,volc,envfreq,envstyle,chiptype] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Allpass1 [AR] in=0.0 freq=1200.0
-allpass1 :: Rate -> UGen -> UGen -> UGen
-allpass1 rate in_ freq = mkUGen Nothing [AR] (Left rate) "Allpass1" [in_,freq] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Allpass2 [AR] in=0.0 freq=1200.0 rq=1.0
-allpass2 :: Rate -> UGen -> UGen -> UGen -> UGen
-allpass2 rate in_ freq rq = mkUGen Nothing [AR] (Left rate) "Allpass2" [in_,freq,rq] Nothing 1 (Special 0) NoId
-
--- | amplitude follower
---
---  AmplitudeMod [KR,AR] in=0.0 attackTime=1.0e-2 releaseTime=1.0e-2
-amplitudeMod :: Rate -> UGen -> UGen -> UGen -> UGen
-amplitudeMod rate in_ attackTime releaseTime = mkUGen Nothing [KR,AR] (Left rate) "AmplitudeMod" [in_,attackTime,releaseTime] Nothing 1 (Special 0) NoId
-
--- | event analyser (BBCut)
---
---  AnalyseEvents2 [AR] in=0.0 bufnum=0.0 threshold=0.34 triggerid=101.0 circular=0.0 pitch=0.0
-analyseEvents2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-analyseEvents2 rate in_ bufnum threshold triggerid circular pitch_ = mkUGen Nothing [AR] (Left rate) "AnalyseEvents2" [in_,bufnum,threshold,triggerid,circular,pitch_] Nothing 1 (Special 0) NoId
-
--- | 2-species Predator-Prey model
---
---  ArneodoCoulletTresser [AR] freq=22050.0 alpha=1.5 h=5.0e-2 xi=0.5 yi=0.5 zi=0.5
-arneodoCoulletTresser :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-arneodoCoulletTresser rate freq alpha h xi yi zi = mkUGen Nothing [AR] (Left rate) "ArneodoCoulletTresser" [freq,alpha,h,xi,yi,zi] Nothing 3 (Special 0) NoId
-
--- | detect the largest value (and its position) in an array of UGens
---
---  ArrayMax [KR,AR] array=0.0
-arrayMax :: Rate -> UGen -> UGen
-arrayMax rate array = mkUGen Nothing [KR,AR] (Left rate) "ArrayMax" [array] Nothing 2 (Special 0) NoId
-
--- | detect the smallest value (and its position) in an array of UGens
---
---  ArrayMin [KR,AR] array=0.0
-arrayMin :: Rate -> UGen -> UGen
-arrayMin rate array = mkUGen Nothing [KR,AR] (Left rate) "ArrayMin" [array] Nothing 2 (Special 0) NoId
-
--- | (Undocumented class)
---
---  AtsAmp [KR,AR] atsbuffer=0.0 partialNum=0.0 filePointer=0.0
-atsAmp :: Rate -> UGen -> UGen -> UGen -> UGen
-atsAmp rate atsbuffer partialNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsAmp" [atsbuffer,partialNum,filePointer] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  AtsBand [AR] atsbuffer=0.0 band=0.0 filePointer=0.0
-atsBand :: Rate -> UGen -> UGen -> UGen -> UGen
-atsBand rate atsbuffer band filePointer = mkUGen Nothing [AR] (Left rate) "AtsBand" [atsbuffer,band,filePointer] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  AtsFreq [KR,AR] atsbuffer=0.0 partialNum=0.0 filePointer=0.0
-atsFreq :: Rate -> UGen -> UGen -> UGen -> UGen
-atsFreq rate atsbuffer partialNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsFreq" [atsbuffer,partialNum,filePointer] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  AtsNoiSynth [AR] atsbuffer=0.0 numPartials=0.0 partialStart=0.0 partialSkip=1.0 filePointer=0.0 sinePct=1.0 noisePct=1.0 freqMul=1.0 freqAdd=0.0 numBands=25.0 bandStart=0.0 bandSkip=1.0
-atsNoiSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-atsNoiSynth rate atsbuffer numPartials partialStart partialSkip filePointer sinePct noisePct freqMul freqAdd numBands bandStart bandSkip = mkUGen Nothing [AR] (Left rate) "AtsNoiSynth" [atsbuffer,numPartials,partialStart,partialSkip,filePointer,sinePct,noisePct,freqMul,freqAdd,numBands,bandStart,bandSkip] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  AtsNoise [KR,AR] atsbuffer=0.0 bandNum=0.0 filePointer=0.0
-atsNoise :: Rate -> UGen -> UGen -> UGen -> UGen
-atsNoise rate atsbuffer bandNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsNoise" [atsbuffer,bandNum,filePointer] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  AtsParInfo [KR,AR] atsbuffer=0.0 partialNum=0.0 filePointer=0.0
-atsParInfo :: Rate -> UGen -> UGen -> UGen -> UGen
-atsParInfo rate atsbuffer partialNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsParInfo" [atsbuffer,partialNum,filePointer] Nothing 2 (Special 0) NoId
-
--- | (Undocumented class)
---
---  AtsPartial [AR] atsbuffer=0.0 partial=0.0 filePointer=0.0 freqMul=1.0 freqAdd=0.0
-atsPartial :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-atsPartial rate atsbuffer partial filePointer freqMul freqAdd = mkUGen Nothing [AR] (Left rate) "AtsPartial" [atsbuffer,partial,filePointer,freqMul,freqAdd] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  AtsSynth [AR] atsbuffer=0.0 numPartials=0.0 partialStart=0.0 partialSkip=1.0 filePointer=0.0 freqMul=1.0 freqAdd=0.0
-atsSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-atsSynth rate atsbuffer numPartials partialStart partialSkip filePointer freqMul freqAdd = mkUGen Nothing [AR] (Left rate) "AtsSynth" [atsbuffer,numPartials,partialStart,partialSkip,filePointer,freqMul,freqAdd] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  AtsUGen [] maxSize=0.0
-atsUGen :: Rate -> UGen -> UGen
-atsUGen rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "AtsUGen" [maxSize] Nothing 1 (Special 0) NoId
-
--- | Detect onsets and assess the nature of the attack slope
---
---  AttackSlope [KR] input=0.0 windowsize=1024.0 peakpicksize=20.0 leak=0.999 energythreshold=1.0e-2 sumthreshold=20.0 mingap=30.0 numslopesaveraged=10.0
-attackSlope :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-attackSlope rate input windowsize peakpicksize leak energythreshold sumthreshold mingap numslopesaveraged = mkUGen Nothing [KR] (Left rate) "AttackSlope" [input,windowsize,peakpicksize,leak,energythreshold,sumthreshold,mingap,numslopesaveraged] Nothing 6 (Special 0) NoId
-
--- | (Undocumented class)
---
---  AudioMSG [AR] in=0.0 index=0.0
-audioMSG :: Rate -> UGen -> UGen -> UGen
-audioMSG rate in_ index_ = mkUGen Nothing [AR] (Left rate) "AudioMSG" [in_,index_] Nothing 1 (Special 0) NoId
-
--- | calculates mean average of audio or control rate signal
---
---  AverageOutput [KR,AR] in=0.0 trig=0.0
-averageOutput :: UGen -> UGen -> UGen
-averageOutput in_ trig_ = mkUGen Nothing [KR,AR] (Right [0]) "AverageOutput" [in_,trig_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  B2A [AR] w=0.0 x=0.0 y=0.0 z=0.0
-b2A :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-b2A rate w x y z = mkUGen Nothing [AR] (Left rate) "B2A" [w,x,y,z] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  B2Ster [AR] w=0.0 x=0.0 y=0.0
-b2Ster :: Rate -> UGen -> UGen -> UGen -> UGen
-b2Ster rate w x y = mkUGen Nothing [AR] (Left rate) "B2Ster" [w,x,y] Nothing 2 (Special 0) NoId
-
--- | (Undocumented class)
---
---  B2UHJ [AR] w=0.0 x=0.0 y=0.0
-b2UHJ :: Rate -> UGen -> UGen -> UGen -> UGen
-b2UHJ rate w x y = mkUGen Nothing [AR] (Left rate) "B2UHJ" [w,x,y] Nothing 2 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BBlockerBuf [AR] freq=0.0 bufnum=0.0 startpoint=0.0
-bBlockerBuf :: Rate -> UGen -> UGen -> UGen -> UGen
-bBlockerBuf rate freq bufnum startpoint = mkUGen Nothing [AR] (Left rate) "BBlockerBuf" [freq,bufnum,startpoint] Nothing 9 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BFDecode1 [AR] w=0.0 x=0.0 y=0.0 z=0.0 azimuth=0.0 elevation=0.0 wComp=0.0
-bFDecode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-bFDecode1 rate w x y z azimuth elevation wComp = mkUGen Nothing [AR] (Left rate) "BFDecode1" [w,x,y,z,azimuth,elevation,wComp] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BFDecoder [] maxSize=0.0
-bFDecoder :: Rate -> UGen -> UGen
-bFDecoder rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "BFDecoder" [maxSize] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BFEncode1 [AR] in=0.0 azimuth=0.0 elevation=0.0 rho=1.0 gain=1.0 wComp=0.0
-bFEncode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-bFEncode1 rate in_ azimuth elevation rho gain wComp = mkUGen Nothing [AR] (Left rate) "BFEncode1" [in_,azimuth,elevation,rho,gain,wComp] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BFEncode2 [AR] in=0.0 point_x=1.0 point_y=1.0 elevation=0.0 gain=1.0 wComp=0.0
-bFEncode2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-bFEncode2 rate in_ point_x point_y elevation gain wComp = mkUGen Nothing [AR] (Left rate) "BFEncode2" [in_,point_x,point_y,elevation,gain,wComp] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BFEncodeSter [AR] l=0.0 r=0.0 azimuth=0.0 width=1.5707963267949 elevation=0.0 rho=1.0 gain=1.0 wComp=0.0
-bFEncodeSter :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-bFEncodeSter rate l r azimuth width elevation rho gain wComp = mkUGen Nothing [AR] (Left rate) "BFEncodeSter" [l,r,azimuth,width,elevation,rho,gain,wComp] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BFGrainPanner [] maxSize=0.0
-bFGrainPanner :: Rate -> UGen -> UGen
-bFGrainPanner rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "BFGrainPanner" [maxSize] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BFManipulate [AR] w=0.0 x=0.0 y=0.0 z=0.0 rotate=0.0 tilt=0.0 tumble=0.0
-bFManipulate :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-bFManipulate rate w x y z rotate_ tilt_ tumble_ = mkUGen Nothing [AR] (Left rate) "BFManipulate" [w,x,y,z,rotate_,tilt_,tumble_] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BFPanner [] maxSize=0.0
-bFPanner :: Rate -> UGen -> UGen
-bFPanner rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "BFPanner" [maxSize] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BLBufRd [KR,AR] bufnum=0.0 phase=0.0 ratio=1.0
-bLBufRd :: Rate -> UGen -> UGen -> UGen -> UGen
-bLBufRd rate bufnum phase ratio = mkUGen Nothing [KR,AR] (Left rate) "BLBufRd" [bufnum,phase,ratio] Nothing 1 (Special 0) NoId
-
--- | 24db/oct rolloff - 4nd order resonant Low/High/Band Pass Filter
---
---  BMoog [AR] in=0.0 freq=440.0 q=0.2 mode=0.0 saturation=0.95
-bMoog :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-bMoog in_ freq q mode saturation = mkUGen Nothing [AR] (Right [0]) "BMoog" [in_,freq,q,mode,saturation] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Balance [AR] in=0.0 test=0.0 hp=10.0 stor=0.0
-balance :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-balance rate in_ test hp stor = mkUGen Nothing [AR] (Left rate) "Balance" [in_,test,hp,stor] Nothing 1 (Special 0) NoId
-
--- | Extracts statistics on a beat histogram
---
---  BeatStatistics [KR] fft=0.0 leak=0.995 numpreviousbeats=4.0
-beatStatistics :: Rate -> UGen -> UGen -> UGen -> UGen
-beatStatistics rate fft_ leak numpreviousbeats = mkUGen Nothing [KR] (Left rate) "BeatStatistics" [fft_,leak,numpreviousbeats] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BinData [KR,AR] buffer=0.0 bin=0.0 overlaps=0.5
-binData :: Rate -> UGen -> UGen -> UGen -> UGen
-binData rate buffer bin overlaps = mkUGen Nothing [KR,AR] (Left rate) "BinData" [buffer,bin,overlaps] Nothing 2 (Special 0) NoId
-
--- | Band limited impulse generation
---
---  BlitB3 [AR] freq=440.0
-blitB3 :: Rate -> UGen -> UGen
-blitB3 rate freq = mkUGen Nothing [AR] (Left rate) "BlitB3" [freq] Nothing 1 (Special 0) NoId
-
--- | BLIT derived sawtooth
---
---  BlitB3Saw [AR] freq=440.0 leak=0.99
-blitB3Saw :: Rate -> UGen -> UGen -> UGen
-blitB3Saw rate freq leak = mkUGen Nothing [AR] (Left rate) "BlitB3Saw" [freq,leak] Nothing 1 (Special 0) NoId
-
--- | Bipolar BLIT derived square waveform
---
---  BlitB3Square [AR] freq=440.0 leak=0.99
-blitB3Square :: Rate -> UGen -> UGen -> UGen
-blitB3Square rate freq leak = mkUGen Nothing [AR] (Left rate) "BlitB3Square" [freq,leak] Nothing 1 (Special 0) NoId
-
--- | Bipolar BLIT derived triangle
---
---  BlitB3Tri [AR] freq=440.0 leak=0.99 leak2=0.99
-blitB3Tri :: Rate -> UGen -> UGen -> UGen -> UGen
-blitB3Tri rate freq leak leak2 = mkUGen Nothing [AR] (Left rate) "BlitB3Tri" [freq,leak,leak2] Nothing 1 (Special 0) NoId
-
--- | breakcore simulator
---
---  Breakcore [AR] bufnum=0.0 capturein=0.0 capturetrigger=0.0 duration=0.1 ampdropout=0.0
-breakcore :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-breakcore rate bufnum capturein capturetrigger duration ampdropout = mkUGen Nothing [AR] (Left rate) "Breakcore" [bufnum,capturein,capturetrigger,duration,ampdropout] Nothing 1 (Special 0) NoId
-
--- | Prigogine oscillator
---
---  Brusselator [AR] reset=0.0 rate=1.0e-2 mu=1.0 gamma=1.0 initx=0.5 inity=0.5
-brusselator :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-brusselator rate reset rate_ mu gamma initx inity = mkUGen Nothing [AR] (Left rate) "Brusselator" [reset,rate_,mu,gamma,initx,inity] Nothing 2 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BufGrain [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 interp=2.0
-bufGrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-bufGrain rate trigger dur sndbuf rate_ pos interp = mkUGen Nothing [AR] (Left rate) "BufGrain" [trigger,dur,sndbuf,rate_,pos,interp] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BufGrainB [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf=0.0 interp=2.0
-bufGrainB :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-bufGrainB rate trigger dur sndbuf rate_ pos envbuf interp = mkUGen Nothing [AR] (Left rate) "BufGrainB" [trigger,dur,sndbuf,rate_,pos,envbuf,interp] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BufGrainBBF [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 interp=2.0 wComp=0.0
-bufGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-bufGrainBBF rate trigger dur sndbuf rate_ pos envbuf azimuth elevation rho interp wComp = mkUGen Nothing [AR] (Left rate) "BufGrainBBF" [trigger,dur,sndbuf,rate_,pos,envbuf,azimuth,elevation,rho,interp,wComp] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BufGrainBF [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 azimuth=0.0 elevation=0.0 rho=1.0 interp=2.0 wComp=0.0
-bufGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-bufGrainBF rate trigger dur sndbuf rate_ pos azimuth elevation rho interp wComp = mkUGen Nothing [AR] (Left rate) "BufGrainBF" [trigger,dur,sndbuf,rate_,pos,azimuth,elevation,rho,interp,wComp] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BufGrainI [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 interp=2.0
-bufGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-bufGrainI rate trigger dur sndbuf rate_ pos envbuf1 envbuf2 ifac interp = mkUGen Nothing [AR] (Left rate) "BufGrainI" [trigger,dur,sndbuf,rate_,pos,envbuf1,envbuf2,ifac,interp] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  BufGrainIBF [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 interp=2.0 wComp=0.0
-bufGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-bufGrainIBF rate trigger dur sndbuf rate_ pos envbuf1 envbuf2 ifac azimuth elevation rho interp wComp = mkUGen Nothing [AR] (Left rate) "BufGrainIBF" [trigger,dur,sndbuf,rate_,pos,envbuf1,envbuf2,ifac,azimuth,elevation,rho,interp,wComp] Nothing 4 (Special 0) NoId
-
--- | detect the largest value (and its position) in an array of UGens
---
---  BufMax [KR] bufnum=0.0 gate=1.0
-bufMax :: Rate -> UGen -> UGen -> UGen
-bufMax rate bufnum gate_ = mkUGen Nothing [KR] (Left rate) "BufMax" [bufnum,gate_] Nothing 2 (Special 0) NoId
-
--- | detect the largest value (and its position) in an array of UGens
---
---  BufMin [KR] bufnum=0.0 gate=1.0
-bufMin :: Rate -> UGen -> UGen -> UGen
-bufMin rate bufnum gate_ = mkUGen Nothing [KR] (Left rate) "BufMin" [bufnum,gate_] Nothing 2 (Special 0) NoId
-
--- | (Undocumented class)
---
---  CQ_Diff [KR] in1=0.0 in2=0.0 databufnum=0.0
-cQ_Diff :: Rate -> UGen -> UGen -> UGen -> UGen
-cQ_Diff rate in1 in2 databufnum = mkUGen Nothing [KR] (Left rate) "CQ_Diff" [in1,in2,databufnum] Nothing 1 (Special 0) NoId
-
--- | Quefrency analysis and liftering
---
---  Cepstrum [] cepbuf=0.0 fftchain=0.0
-cepstrum :: Rate -> UGen -> UGen -> UGen
-cepstrum rate cepbuf fftchain = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Cepstrum" [cepbuf,fftchain] Nothing 1 (Special 0) NoId
-
--- | Octave chroma band based representation of energy in a signal; Chromagram for nTET tuning systems with any base reference
---
---  Chromagram [KR] fft=0.0 fftsize=2048.0 n=12.0 tuningbase=32.703195662575 octaves=8.0 integrationflag=0.0 coeff=0.9 octaveratio=2.0 perframenormalize=0.0
-chromagram :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-chromagram rate fft_ fftsize n tuningbase octaves integrationflag coeff octaveratio perframenormalize = mkUGen Nothing [KR] (Left rate) "Chromagram" [fft_,fftsize,n,tuningbase,octaves,integrationflag,coeff,octaveratio,perframenormalize] Nothing 12 (Special 0) NoId
-
--- | (Undocumented class)
---
---  ChuaL [AR] freq=22050.0 a=0.3286 b=0.9336 c=-0.8126 d=0.399 rr=0.0 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0
-chuaL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-chuaL rate freq a b c d rr h xi yi zi = mkUGen Nothing [AR] (Left rate) "ChuaL" [freq,a,b,c,d,rr,h,xi,yi,zi] Nothing 1 (Special 0) NoId
-
--- | circular linear lag
---
---  CircleRamp [KR,AR] in=0.0 lagTime=0.1 circmin=-180.0 circmax=180.0
-circleRamp :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-circleRamp rate in_ lagTime circmin circmax = mkUGen Nothing [KR,AR] (Left rate) "CircleRamp" [in_,lagTime,circmin,circmax] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Clipper32 [AR] in=0.0 lo=-0.8 hi=0.8
-clipper32 :: Rate -> UGen -> UGen -> UGen -> UGen
-clipper32 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "Clipper32" [in_,lo,hi] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Clipper4 [AR] in=0.0 lo=-0.8 hi=0.8
-clipper4 :: Rate -> UGen -> UGen -> UGen -> UGen
-clipper4 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "Clipper4" [in_,lo,hi] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Clipper8 [AR] in=0.0 lo=-0.8 hi=0.8
-clipper8 :: Rate -> UGen -> UGen -> UGen -> UGen
-clipper8 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "Clipper8" [in_,lo,hi] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Clockmus [KR] 
-clockmus :: Rate -> UGen
-clockmus rate = mkUGen Nothing [KR] (Left rate) "Clockmus" [] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  CombLP [AR] in=0.0 gate=1.0 maxdelaytime=0.2 delaytime=0.2 decaytime=1.0 coef=0.5
-combLP :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-combLP rate in_ gate_ maxdelaytime delaytime decaytime coef = mkUGen Nothing [AR] (Left rate) "CombLP" [in_,gate_,maxdelaytime,delaytime,decaytime,coef] Nothing 1 (Special 0) NoId
-
--- | FM-modulable resonating filter
---
---  ComplexRes [AR] in=0.0 freq=100.0 decay=0.2;    FILTER: TRUE
-complexRes :: UGen -> UGen -> UGen -> UGen
-complexRes in_ freq decay_ = mkUGen Nothing [AR] (Right [0]) "ComplexRes" [in_,freq,decay_] Nothing 1 (Special 0) NoId
-
--- | Concatenative Cross-Synthesis on Live Streams
---
---  Concat [AR] control=0.0 source=0.0 storesize=1.0 seektime=1.0 seekdur=1.0 matchlength=5.0e-2 freezestore=0.0 zcr=1.0 lms=1.0 sc=1.0 st=0.0 randscore=0.0
-concat :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-concat rate control_ source storesize seektime seekdur matchlength freezestore zcr lms sc st randscore = mkUGen Nothing [AR] (Left rate) "Concat" [control_,source,storesize,seektime,seekdur,matchlength,freezestore,zcr,lms,sc,st,randscore] Nothing 1 (Special 0) NoId
-
--- | Concatenative Cross-Synthesis on Live Streams
---
---  Concat2 [AR] control=0.0 source=0.0 storesize=1.0 seektime=1.0 seekdur=1.0 matchlength=5.0e-2 freezestore=0.0 zcr=1.0 lms=1.0 sc=1.0 st=0.0 randscore=0.0 threshold=1.0e-2
-concat2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-concat2 rate control_ source storesize seektime seekdur matchlength freezestore zcr lms sc st randscore threshold = mkUGen Nothing [AR] (Left rate) "Concat2" [control_,source,storesize,seektime,seekdur,matchlength,freezestore,zcr,lms,sc,st,randscore,threshold] Nothing 1 (Special 0) NoId
-
--- | an amplitude tracking based onset detector
---
---  Coyote [KR] in=0.0 trackFall=0.2 slowLag=0.2 fastLag=1.0e-2 fastMul=0.5 thresh=5.0e-2 minDur=0.1
-coyote :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-coyote rate in_ trackFall slowLag fastLag fastMul thresh minDur = mkUGen Nothing [KR] (Left rate) "Coyote" [in_,trackFall,slowLag,fastLag,fastMul,thresh,minDur] Nothing 1 (Special 0) NoId
-
--- | Measure the temporal crest factor of a signal
---
---  Crest [KR] in=0.0 numsamps=400.0 gate=1.0
-crest :: Rate -> UGen -> UGen -> UGen -> UGen
-crest rate in_ numsamps gate_ = mkUGen Nothing [KR] (Left rate) "Crest" [in_,numsamps,gate_] Nothing 1 (Special 0) NoId
-
--- | port of some ladspa plugins
---
---  CrossoverDistortion [AR] in=0.0 amp=0.5 smooth=0.5
-crossoverDistortion :: UGen -> UGen -> UGen -> UGen
-crossoverDistortion in_ amp smooth = mkUGen Nothing [AR] (Right [0]) "CrossoverDistortion" [in_,amp,smooth] Nothing 1 (Special 0) NoId
-
--- | Digitally modelled analog filter
---
---  DFM1 [AR] in=0.0 freq=1000.0 res=0.1 inputgain=1.0 type=0.0 noiselevel=3.0e-4
-dfm1 :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-dfm1 in_ freq res inputgain type_ noiselevel = mkUGen Nothing [AR] (Right [0]) "DFM1" [in_,freq,res,inputgain,type_,noiselevel] Nothing 1 (Special 0) NoId
-
--- | Demand rate implementation of a Wiard noise ring
---
---  DNoiseRing [DR] change=0.5 chance=0.5 shift=1.0 numBits=8.0 resetval=0.0;    DEMAND/NONDET
-dNoiseRing :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-dNoiseRing change chance shift numBits resetval = mkUGen Nothing [DR] (Left DR) "DNoiseRing" [change,chance,shift,numBits,resetval] Nothing 1 (Special 0) NoId
-
--- | Triangle via 3rd order differerentiated polynomial waveform
---
---  DPW3Tri [AR] freq=440.0
-dpw3Tri :: Rate -> UGen -> UGen
-dpw3Tri rate freq = mkUGen Nothing [AR] (Left rate) "DPW3Tri" [freq] Nothing 1 (Special 0) NoId
-
--- | Sawtooth via 4th order differerentiated polynomial waveform
---
---  DPW4Saw [AR] freq=440.0
-dpw4Saw :: Rate -> UGen -> UGen
-dpw4Saw rate freq = mkUGen Nothing [AR] (Left rate) "DPW4Saw" [freq] Nothing 1 (Special 0) NoId
-
--- | Plucked physical model.
---
---  DWGBowed [AR] freq=440.0 velb=0.5 force=1.0 gate=1.0 pos=0.14 release=0.1 c1=1.0 c3=3.0 impZ=0.55 fB=2.0
-dWGBowed :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-dWGBowed rate freq velb force gate_ pos release c1 c3 impZ fB = mkUGen Nothing [AR] (Left rate) "DWGBowed" [freq,velb,force,gate_,pos,release,c1,c3,impZ,fB] Nothing 1 (Special 0) NoId
-
--- | Plucked physical model.
---
---  DWGBowedSimple [AR] freq=440.0 velb=0.5 force=1.0 gate=1.0 pos=0.14 release=0.1 c1=1.0 c3=30.0
-dWGBowedSimple :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-dWGBowedSimple rate freq velb force gate_ pos release c1 c3 = mkUGen Nothing [AR] (Left rate) "DWGBowedSimple" [freq,velb,force,gate_,pos,release,c1,c3] Nothing 1 (Special 0) NoId
-
--- | Plucked physical model.
---
---  DWGBowedTor [AR] freq=440.0 velb=0.5 force=1.0 gate=1.0 pos=0.14 release=0.1 c1=1.0 c3=3.0 impZ=0.55 fB=2.0 mistune=5.2 c1tor=1.0 c3tor=3000.0 iZtor=1.8
-dWGBowedTor :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-dWGBowedTor rate freq velb force gate_ pos release c1 c3 impZ fB mistune c1tor c3tor iZtor = mkUGen Nothing [AR] (Left rate) "DWGBowedTor" [freq,velb,force,gate_,pos,release,c1,c3,impZ,fB,mistune,c1tor,c3tor,iZtor] Nothing 1 (Special 0) NoId
-
--- | Plucked physical model.
---
---  DWGPlucked [AR] freq=440.0 amp=0.5 gate=1.0 pos=0.14 c1=1.0 c3=30.0 inp=0.0 release=0.1
-dWGPlucked :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-dWGPlucked rate freq amp gate_ pos c1 c3 inp release = mkUGen Nothing [AR] (Left rate) "DWGPlucked" [freq,amp,gate_,pos,c1,c3,inp,release] Nothing 1 (Special 0) NoId
-
--- | Plucked physical model.
---
---  DWGPlucked2 [AR] freq=440.0 amp=0.5 gate=1.0 pos=0.14 c1=1.0 c3=30.0 inp=0.0 release=0.1 mistune=1.008 mp=0.55 gc=1.0e-2
-dWGPlucked2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-dWGPlucked2 rate freq amp gate_ pos c1 c3 inp release mistune mp gc = mkUGen Nothing [AR] (Left rate) "DWGPlucked2" [freq,amp,gate_,pos,c1,c3,inp,release,mistune,mp,gc] Nothing 1 (Special 0) NoId
-
--- | Plucked physical model.
---
---  DWGPluckedStiff [AR] freq=440.0 amp=0.5 gate=1.0 pos=0.14 c1=1.0 c3=30.0 inp=0.0 release=0.1 fB=2.0
-dWGPluckedStiff :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-dWGPluckedStiff rate freq amp gate_ pos c1 c3 inp release fB = mkUGen Nothing [AR] (Left rate) "DWGPluckedStiff" [freq,amp,gate_,pos,c1,c3,inp,release,fB] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  DWGSoundBoard [AR] inp=0.0 c1=20.0 c3=20.0 mix=0.8 d1=199.0 d2=211.0 d3=223.0 d4=227.0 d5=229.0 d6=233.0 d7=239.0 d8=241.0
-dWGSoundBoard :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-dWGSoundBoard rate inp c1 c3 mix d1 d2 d3 d4 d5 d6 d7 d8 = mkUGen Nothing [AR] (Left rate) "DWGSoundBoard" [inp,c1,c3,mix,d1,d2,d3,d4,d5,d6,d7,d8] Nothing 1 (Special 0) NoId
-
--- | demand rate brownian movement with Gendyn distributions
---
---  Dbrown2 [] lo=0.0 hi=0.0 step=0.0 dist=0.0 length=1.0e8
-dbrown2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-dbrown2 rate lo hi step dist length_ = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Dbrown2" [lo,hi,step,dist,length_] Nothing 1 (Special 0) NoId
-
--- | demand rate tag system on a buffer
---
---  DbufTag [DR] bufnum=0.0 v=0.0 axiom=0.0 rules=0.0 recycle=0.0 mode=0.0;    DEMAND/NONDET
-dbufTag :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-dbufTag rate bufnum v axiom rules recycle mode = mkUGen Nothing [DR] (Left rate) "DbufTag" [bufnum,v,axiom,rules,recycle,mode] Nothing 1 (Special 0) NoId
-
--- | port of some ladspa plugins
---
---  Decimator [AR] in=0.0 rate=44100.0 bits=24.0
-decimator :: Rate -> UGen -> UGen -> UGen -> UGen
-decimator rate in_ rate_ bits = mkUGen Nothing [AR] (Left rate) "Decimator" [in_,rate_,bits] Nothing 1 (Special 0) NoId
-
--- | Demand version of the BetaBlocker VChip
---
---  DetaBlockerBuf [DR] bufnum=0.0 startpoint=0.0;    DEMAND/NONDET
-detaBlockerBuf :: Rate -> UGen -> UGen -> UGen
-detaBlockerBuf rate bufnum startpoint = mkUGen Nothing [DR] (Left rate) "DetaBlockerBuf" [bufnum,startpoint] Nothing 1 (Special 0) NoId
-
--- | demand rate finite state machine
---
---  Dfsm [DR] rules=0.0 n=1.0 rgen=0.0;    DEMAND/NONDET
-dfsm :: Rate -> UGen -> UGen -> UGen -> UGen
-dfsm rate rules n rgen = mkUGen Nothing [DR] (Left rate) "Dfsm" [rules,n,rgen] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Dgauss [] lo=0.0 hi=0.0 length=1.0e8
-dgauss :: Rate -> UGen -> UGen -> UGen -> UGen
-dgauss rate lo hi length_ = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Dgauss" [lo,hi,length_] Nothing 1 (Special 0) NoId
-
--- | Ring modulation based on the physical model of a diode.
---
---  DiodeRingMod [AR] car=0.0 mod=0.0;    FILTER: TRUE
-diodeRingMod :: UGen -> UGen -> UGen
-diodeRingMod car mod_ = mkUGen Nothing [AR] (Right [0]) "DiodeRingMod" [car,mod_] Nothing 1 (Special 0) NoId
-
--- | port of some ladspa plugins
---
---  Disintegrator [AR] in=0.0 probability=0.5 multiplier=0.0;    FILTER: TRUE, NONDET
-disintegrator :: ID a => a -> UGen -> UGen -> UGen -> UGen
-disintegrator z in_ probability multiplier = mkUGen Nothing [AR] (Right [0]) "Disintegrator" [in_,probability,multiplier] Nothing 1 (Special 0) (toUId z)
-
--- | discrete time neurodynamics
---
---  Dneuromodule [KR,AR] dt=0.0 numChannels=0.0 theta=0.0 x=0.0 weights=0.0
-dneuromodule :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-dneuromodule rate dt numChannels theta x weights = mkUGen Nothing [KR,AR] (Left rate) "Dneuromodule" [dt,numChannels,theta,x,weights] Nothing 1 (Special 0) NoId
-
--- | Nested Allpass filters as proposed by Vercoe and Pluckett
---
---  DoubleNestedAllpassC [AR] in=0.0 maxdelay1=4.7e-3 delay1=4.7e-3 gain1=0.15 maxdelay2=2.2e-2 delay2=2.2e-2 gain2=0.25 maxdelay3=8.3e-3 delay3=8.3e-3 gain3=0.3;    FILTER: TRUE
-doubleNestedAllpassC :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-doubleNestedAllpassC in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 maxdelay3 delay3 gain3 = mkUGen Nothing [AR] (Right [0]) "DoubleNestedAllpassC" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2,maxdelay3,delay3,gain3] Nothing 1 (Special 0) NoId
-
--- | Nested Allpass filters as proposed by Vercoe and Pluckett
---
---  DoubleNestedAllpassL [AR] in=0.0 maxdelay1=4.7e-3 delay1=4.7e-3 gain1=0.15 maxdelay2=2.2e-2 delay2=2.2e-2 gain2=0.25 maxdelay3=8.3e-3 delay3=8.3e-3 gain3=0.3;    FILTER: TRUE
-doubleNestedAllpassL :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-doubleNestedAllpassL in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 maxdelay3 delay3 gain3 = mkUGen Nothing [AR] (Right [0]) "DoubleNestedAllpassL" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2,maxdelay3,delay3,gain3] Nothing 1 (Special 0) NoId
-
--- | Nested Allpass filters as proposed by Vercoe and Pluckett
---
---  DoubleNestedAllpassN [AR] in=0.0 maxdelay1=4.7e-3 delay1=4.7e-3 gain1=0.15 maxdelay2=2.2e-2 delay2=2.2e-2 gain2=0.25 maxdelay3=8.3e-3 delay3=8.3e-3 gain3=0.3;    FILTER: TRUE
-doubleNestedAllpassN :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-doubleNestedAllpassN in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 maxdelay3 delay3 gain3 = mkUGen Nothing [AR] (Right [0]) "DoubleNestedAllpassN" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2,maxdelay3,delay3,gain3] Nothing 1 (Special 0) NoId
-
-
--- | Forced DoubleWell Oscillator
---
---  DoubleWell [AR] reset=0.0 ratex=1.0e-2 ratey=1.0e-2 f=1.0 w=1.0e-3 delta=1.0 initx=0.0 inity=0.0
-doubleWell :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-doubleWell rate reset ratex ratey f w delta initx inity = mkUGen Nothing [AR] (Left rate) "DoubleWell" [reset,ratex,ratey,f,w,delta,initx,inity] Nothing 1 (Special 0) NoId
-
--- | Forced DoubleWell Oscillator
---
---  DoubleWell2 [AR] reset=0.0 ratex=1.0e-2 ratey=1.0e-2 f=1.0 w=1.0e-3 delta=1.0 initx=0.0 inity=0.0
-doubleWell2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-doubleWell2 rate reset ratex ratey f w delta initx inity = mkUGen Nothing [AR] (Left rate) "DoubleWell2" [reset,ratex,ratey,f,w,delta,initx,inity] Nothing 1 (Special 0) NoId
-
--- | Forced DoubleWell Oscillator
---
---  DoubleWell3 [AR] reset=0.0 rate=1.0e-2 f=0.0 delta=0.25 initx=0.0 inity=0.0
-doubleWell3 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-doubleWell3 rate reset rate_ f delta initx inity = mkUGen Nothing [AR] (Left rate) "DoubleWell3" [reset,rate_,f,delta,initx,inity] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  DriveNoise [AR] in=0.0 amount=1.0 multi=5.0
-driveNoise :: Rate -> UGen -> UGen -> UGen -> UGen
-driveNoise rate in_ amount multi = mkUGen Nothing [AR] (Left rate) "DriveNoise" [in_,amount,multi] Nothing 1 (Special 0) NoId
-
--- | Crosscorrelation search and drum pattern matching beat tracker
---
---  DrumTrack [KR] in=0.0 lock=0.0 dynleak=0.0 tempowt=0.0 phasewt=0.0 basswt=0.0 patternwt=1.0 prior=0.0 kicksensitivity=1.0 snaresensitivity=1.0 debugmode=0.0
-drumTrack :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-drumTrack rate in_ lock dynleak tempowt phasewt basswt patternwt prior kicksensitivity snaresensitivity debugmode = mkUGen Nothing [KR] (Left rate) "DrumTrack" [in_,lock,dynleak,tempowt,phasewt,basswt,patternwt,prior,kicksensitivity,snaresensitivity,debugmode] Nothing 4 (Special 0) NoId
-
--- | demand rate tag system
---
---  Dtag [] bufsize=0.0 v=0.0 axiom=0.0 rules=0.0 recycle=0.0 mode=0.0
-dtag :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-dtag rate bufsize v axiom rules recycle mode = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Dtag" [bufsize,v,axiom,rules,recycle,mode] Nothing 1 (Special 0) NoId
-
--- | Envelope Follower Filter
---
---  EnvDetect [AR] in=0.0 attack=100.0 release=0.0
-envDetect :: Rate -> UGen -> UGen -> UGen -> UGen
-envDetect rate in_ attack release = mkUGen Nothing [AR] (Left rate) "EnvDetect" [in_,attack,release] Nothing 1 (Special 0) NoId
-
--- | Envelope Follower
---
---  EnvFollow [KR,AR] input=0.0 decaycoeff=0.99
-envFollow :: Rate -> UGen -> UGen -> UGen
-envFollow rate input decaycoeff = mkUGen Nothing [KR,AR] (Left rate) "EnvFollow" [input,decaycoeff] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FFTComplexDev [KR] buffer=0.0 rectify=0.0 powthresh=0.1
-fFTComplexDev :: Rate -> UGen -> UGen -> UGen -> UGen
-fFTComplexDev rate buffer rectify powthresh = mkUGen Nothing [KR] (Left rate) "FFTComplexDev" [buffer,rectify,powthresh] Nothing 1 (Special 0) NoId
-
--- | Spectral crest measure
---
---  FFTCrest [KR] buffer=0.0 freqlo=0.0 freqhi=50000.0
-fFTCrest :: Rate -> UGen -> UGen -> UGen -> UGen
-fFTCrest rate buffer freqlo freqhi = mkUGen Nothing [KR] (Left rate) "FFTCrest" [buffer,freqlo,freqhi] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FFTDiffMags [KR] bufferA=0.0 bufferB=0.0
-fFTDiffMags :: Rate -> UGen -> UGen -> UGen
-fFTDiffMags rate bufferA bufferB = mkUGen Nothing [KR] (Left rate) "FFTDiffMags" [bufferA,bufferB] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FFTFlux [KR] buffer=0.0 normalise=1.0
-fFTFlux :: Rate -> UGen -> UGen -> UGen
-fFTFlux rate buffer normalise = mkUGen Nothing [KR] (Left rate) "FFTFlux" [buffer,normalise] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FFTFluxPos [KR] buffer=0.0 normalise=1.0
-fFTFluxPos :: Rate -> UGen -> UGen -> UGen
-fFTFluxPos rate buffer normalise = mkUGen Nothing [KR] (Left rate) "FFTFluxPos" [buffer,normalise] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FFTMKL [KR] buffer=0.0 epsilon=1.0e-6
-fFTMKL :: Rate -> UGen -> UGen -> UGen
-fFTMKL rate buffer epsilon = mkUGen Nothing [KR] (Left rate) "FFTMKL" [buffer,epsilon] Nothing 1 (Special 0) NoId
-
--- | Find peak value in an FFT frame
---
---  FFTPeak [KR] buffer=0.0 freqlo=0.0 freqhi=50000.0
-fFTPeak :: Rate -> UGen -> UGen -> UGen -> UGen
-fFTPeak rate buffer freqlo freqhi = mkUGen Nothing [KR] (Left rate) "FFTPeak" [buffer,freqlo,freqhi] Nothing 2 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FFTPhaseDev [KR] buffer=0.0 weight=0.0 powthresh=0.1
-fFTPhaseDev :: Rate -> UGen -> UGen -> UGen -> UGen
-fFTPhaseDev rate buffer weight powthresh = mkUGen Nothing [KR] (Left rate) "FFTPhaseDev" [buffer,weight,powthresh] Nothing 1 (Special 0) NoId
-
--- | Instantaneous spectral power
---
---  FFTPower [KR] buffer=0.0 square=1.0
-fFTPower :: Rate -> UGen -> UGen -> UGen
-fFTPower rate buffer square = mkUGen Nothing [KR] (Left rate) "FFTPower" [buffer,square] Nothing 1 (Special 0) NoId
-
--- | Spectral slope
---
---  FFTSlope [KR] buffer=0.0
-fFTSlope :: Rate -> UGen -> UGen
-fFTSlope rate buffer = mkUGen Nothing [KR] (Left rate) "FFTSlope" [buffer] Nothing 1 (Special 0) NoId
-
--- | Spectral spread
---
---  FFTSpread [KR] buffer=0.0 centroid=0.0
-fFTSpread :: Rate -> UGen -> UGen -> UGen
-fFTSpread rate buffer centroid = mkUGen Nothing [KR] (Left rate) "FFTSpread" [buffer,centroid] Nothing 1 (Special 0) NoId
-
--- | Spectral flatness, divided into subbands
---
---  FFTSubbandFlatness [KR] chain=0.0 cutfreqs=0.0
-fFTSubbandFlatness :: Rate -> UGen -> UGen -> UGen
-fFTSubbandFlatness rate chain cutfreqs = mkUGen Nothing [KR] (Left rate) "FFTSubbandFlatness" [chain,cutfreqs] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FFTSubbandFlux [KR] chain=0.0 cutfreqs=0.0 posonly=0.0
-fFTSubbandFlux :: Rate -> UGen -> UGen -> UGen -> UGen
-fFTSubbandFlux rate chain cutfreqs posonly = mkUGen Nothing [KR] (Left rate) "FFTSubbandFlux" [chain,cutfreqs,posonly] Nothing 1 (Special 0) NoId
-
--- | Spectral power, divided into subbands
---
---  FFTSubbandPower [KR] chain=0.0 cutfreqs=0.0 square=1.0 scalemode=1.0
-fFTSubbandPower :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-fFTSubbandPower rate chain cutfreqs square scalemode = mkUGen Nothing [KR] (Left rate) "FFTSubbandPower" [chain,cutfreqs,square,scalemode] Nothing 1 (Special 0) NoId
-
--- | Phase modulation oscillator matrix.
---
---  FM7 [AR] *ctlMatrix=0.0 *modMatrix=0.0
-fm7 :: Rate -> UGen -> UGen -> UGen
-fm7 rate ctlMatrix modMatrix = mkUGen Nothing [AR] (Left rate) "FM7" [] (Just [ctlMatrix,modMatrix]) 6 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FMGrain [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0
-fmGrain :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fmGrain trigger dur carfreq modfreq index_ = mkUGen Nothing [AR] (Right [0]) "FMGrain" [trigger,dur,carfreq,modfreq,index_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FMGrainB [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf=0.0
-fmGrainB :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fmGrainB trigger dur carfreq modfreq index_ envbuf = mkUGen Nothing [AR] (Right [0]) "FMGrainB" [trigger,dur,carfreq,modfreq,index_,envbuf] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FMGrainBBF [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
-fmGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fmGrainBBF rate trigger dur carfreq modfreq index_ envbuf azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "FMGrainBBF" [trigger,dur,carfreq,modfreq,index_,envbuf,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FMGrainBF [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
-fmGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fmGrainBF rate trigger dur carfreq modfreq index_ azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "FMGrainBF" [trigger,dur,carfreq,modfreq,index_,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FMGrainI [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5
-fmGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fmGrainI rate trigger dur carfreq modfreq index_ envbuf1 envbuf2 ifac = mkUGen Nothing [AR] (Left rate) "FMGrainI" [trigger,dur,carfreq,modfreq,index_,envbuf1,envbuf2,ifac] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FMGrainIBF [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
-fmGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fmGrainIBF rate trigger dur carfreq modfreq index_ envbuf1 envbuf2 ifac azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "FMGrainIBF" [trigger,dur,carfreq,modfreq,index_,envbuf1,envbuf2,ifac,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FMHDecode1 [AR] w=0.0 x=0.0 y=0.0 z=0.0 r=0.0 s=0.0 t=0.0 u=0.0 v=0.0 azimuth=0.0 elevation=0.0
-fMHDecode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fMHDecode1 rate w x y z r s t u v azimuth elevation = mkUGen Nothing [AR] (Left rate) "FMHDecode1" [w,x,y,z,r,s,t,u,v,azimuth,elevation] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FMHEncode0 [AR] in=0.0 azimuth=0.0 elevation=0.0 gain=1.0
-fMHEncode0 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-fMHEncode0 rate in_ azimuth elevation gain = mkUGen Nothing [AR] (Left rate) "FMHEncode0" [in_,azimuth,elevation,gain] Nothing 9 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FMHEncode1 [AR] in=0.0 azimuth=0.0 elevation=0.0 rho=1.0 gain=1.0 wComp=0.0
-fMHEncode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fMHEncode1 rate in_ azimuth elevation rho gain wComp = mkUGen Nothing [AR] (Left rate) "FMHEncode1" [in_,azimuth,elevation,rho,gain,wComp] Nothing 9 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FMHEncode2 [AR] in=0.0 point_x=0.0 point_y=0.0 elevation=0.0 gain=1.0 wComp=0.0
-fMHEncode2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fMHEncode2 rate in_ point_x point_y elevation gain wComp = mkUGen Nothing [AR] (Left rate) "FMHEncode2" [in_,point_x,point_y,elevation,gain,wComp] Nothing 9 (Special 0) NoId
-
--- | Storing feature data from UGens in NRT mode
---
---  FeatureSave [KR] features=0.0 trig=0.0
-featureSave :: Rate -> UGen -> UGen -> UGen
-featureSave rate features trig_ = mkUGen Nothing [KR] (Left rate) "FeatureSave" [features,trig_] Nothing 1 (Special 0) NoId
-
--- | FitzHughNagumo Neuron Firing Oscillator
---
---  Fhn2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0
-fhn2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fhn2DC rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "Fhn2DC" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId
-
--- | FitzHughNagumo Neuron Firing Oscillator
---
---  Fhn2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0
-fhn2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fhn2DL rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "Fhn2DL" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId
-
--- | FitzHughNagumo Neuron Firing Oscillator
---
---  Fhn2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0
-fhn2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fhn2DN rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "Fhn2DN" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FhnTrig [KR,AR] minfreq=4.0 maxfreq=10.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0
-fhnTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fhnTrig rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "FhnTrig" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FincoSprottL [AR] freq=22050.0 a=2.45 h=5.0e-2 xi=0.0 yi=0.0 zi=0.0
-fincoSprottL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fincoSprottL rate freq a h xi yi zi = mkUGen Nothing [AR] (Left rate) "FincoSprottL" [freq,a,h,xi,yi,zi] Nothing 3 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FincoSprottM [AR] freq=22050.0 a=-7.0 b=4.0 h=5.0e-2 xi=0.0 yi=0.0 zi=0.0
-fincoSprottM :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fincoSprottM rate freq a b h xi yi zi = mkUGen Nothing [AR] (Left rate) "FincoSprottM" [freq,a,b,h,xi,yi,zi] Nothing 3 (Special 0) NoId
-
--- | (Undocumented class)
---
---  FincoSprottS [AR] freq=22050.0 a=8.0 b=2.0 h=5.0e-2 xi=0.0 yi=0.0 zi=0.0
-fincoSprottS :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fincoSprottS rate freq a b h xi yi zi = mkUGen Nothing [AR] (Left rate) "FincoSprottS" [freq,a,b,h,xi,yi,zi] Nothing 3 (Special 0) NoId
-
--- | Neuron Firing Model Oscillator
---
---  FitzHughNagumo [AR] reset=0.0 rateu=1.0e-2 ratew=1.0e-2 b0=1.0 b1=1.0 initu=0.0 initw=0.0
-fitzHughNagumo :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-fitzHughNagumo rate reset rateu ratew b0 b1 initu initw = mkUGen Nothing [AR] (Left rate) "FitzHughNagumo" [reset,rateu,ratew,b0,b1,initu,initw] Nothing 1 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) UGen superclass
---
---  Foa [] maxSize=0.0
-foa :: Rate -> UGen -> UGen
-foa rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Foa" [maxSize] Nothing 1 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) asymmetry transformer
---
---  FoaAsymmetry [AR] in=0.0 angle=0.0
-foaAsymmetry :: Rate -> UGen -> UGen -> UGen
-foaAsymmetry rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaAsymmetry" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) directivity transformer
---
---  FoaDirectO [AR] in=0.0 angle=0.0
-foaDirectO :: Rate -> UGen -> UGen -> UGen
-foaDirectO rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaDirectO" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) directivity transformer
---
---  FoaDirectX [AR] in=0.0 angle=0.0
-foaDirectX :: Rate -> UGen -> UGen -> UGen
-foaDirectX rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaDirectX" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) directivity transformer
---
---  FoaDirectY [AR] in=0.0 angle=0.0
-foaDirectY :: Rate -> UGen -> UGen -> UGen
-foaDirectY rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaDirectY" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) directivity transformer
---
---  FoaDirectZ [AR] in=0.0 angle=0.0
-foaDirectZ :: Rate -> UGen -> UGen -> UGen
-foaDirectZ rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaDirectZ" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) dominance transformer
---
---  FoaDominateX [AR] in=0.0 gain=0.0
-foaDominateX :: Rate -> UGen -> UGen -> UGen
-foaDominateX rate in_ gain = mkUGen Nothing [AR] (Left rate) "FoaDominateX" [in_,gain] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) dominance transformer
---
---  FoaDominateY [AR] in=0.0 gain=0.0
-foaDominateY :: Rate -> UGen -> UGen -> UGen
-foaDominateY rate in_ gain = mkUGen Nothing [AR] (Left rate) "FoaDominateY" [in_,gain] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) dominance transformer
---
---  FoaDominateZ [AR] in=0.0 gain=0.0
-foaDominateZ :: Rate -> UGen -> UGen -> UGen
-foaDominateZ rate in_ gain = mkUGen Nothing [AR] (Left rate) "FoaDominateZ" [in_,gain] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) focus transformer
---
---  FoaFocusX [AR] in=0.0 angle=0.0
-foaFocusX :: Rate -> UGen -> UGen -> UGen
-foaFocusX rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaFocusX" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) focus transformer
---
---  FoaFocusY [AR] in=0.0 angle=0.0
-foaFocusY :: Rate -> UGen -> UGen -> UGen
-foaFocusY rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaFocusY" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) focus transformer
---
---  FoaFocusZ [AR] in=0.0 angle=0.0
-foaFocusZ :: Rate -> UGen -> UGen -> UGen
-foaFocusZ rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaFocusZ" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) nearfield compensation filter
---
---  FoaNFC [AR] in=0.0 distance=1.0
-foaNFC :: Rate -> UGen -> UGen -> UGen
-foaNFC rate in_ distance = mkUGen Nothing [AR] (Left rate) "FoaNFC" [in_,distance] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) panner
---
---  FoaPanB [AR] in=0.0 azimuth=0.0 elevation=0.0
-foaPanB :: Rate -> UGen -> UGen -> UGen -> UGen
-foaPanB rate in_ azimuth elevation = mkUGen Nothing [AR] (Left rate) "FoaPanB" [in_,azimuth,elevation] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) press transformer
---
---  FoaPressX [AR] in=0.0 angle=0.0
-foaPressX :: Rate -> UGen -> UGen -> UGen
-foaPressX rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaPressX" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) press transformer
---
---  FoaPressY [AR] in=0.0 angle=0.0
-foaPressY :: Rate -> UGen -> UGen -> UGen
-foaPressY rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaPressY" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) press transformer
---
---  FoaPressZ [AR] in=0.0 angle=0.0
-foaPressZ :: Rate -> UGen -> UGen -> UGen
-foaPressZ rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaPressZ" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) proximity effect filter
---
---  FoaProximity [AR] in=0.0 distance=1.0
-foaProximity :: Rate -> UGen -> UGen -> UGen
-foaProximity rate in_ distance = mkUGen Nothing [AR] (Left rate) "FoaProximity" [in_,distance] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) psychoacoustic shelf filter
---
---  FoaPsychoShelf [AR] in=0.0 freq=400.0 k0=0.0 k1=0.0
-foaPsychoShelf :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-foaPsychoShelf rate in_ freq k0 k1 = mkUGen Nothing [AR] (Left rate) "FoaPsychoShelf" [in_,freq,k0,k1] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) push transformer
---
---  FoaPushX [AR] in=0.0 angle=0.0
-foaPushX :: Rate -> UGen -> UGen -> UGen
-foaPushX rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaPushX" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) push transformer
---
---  FoaPushY [AR] in=0.0 angle=0.0
-foaPushY :: Rate -> UGen -> UGen -> UGen
-foaPushY rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaPushY" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) push transformer
---
---  FoaPushZ [AR] in=0.0 angle=0.0
-foaPushZ :: Rate -> UGen -> UGen -> UGen
-foaPushZ rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaPushZ" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) rotation transformer
---
---  FoaRotate [AR] in=0.0 angle=0.0
-foaRotate :: Rate -> UGen -> UGen -> UGen
-foaRotate rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaRotate" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) rotation transformer
---
---  FoaTilt [AR] in=0.0 angle=0.0
-foaTilt :: Rate -> UGen -> UGen -> UGen
-foaTilt rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaTilt" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) rotation transformer
---
---  FoaTumble [AR] in=0.0 angle=0.0
-foaTumble :: Rate -> UGen -> UGen -> UGen
-foaTumble rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaTumble" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) zoom transformer
---
---  FoaZoomX [AR] in=0.0 angle=0.0
-foaZoomX :: Rate -> UGen -> UGen -> UGen
-foaZoomX rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaZoomX" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) zoom transformer
---
---  FoaZoomY [AR] in=0.0 angle=0.0
-foaZoomY :: Rate -> UGen -> UGen -> UGen
-foaZoomY rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaZoomY" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | First Order Ambisonic (FOA) zoom transformer
---
---  FoaZoomZ [AR] in=0.0 angle=0.0
-foaZoomZ :: Rate -> UGen -> UGen -> UGen
-foaZoomZ rate in_ angle = mkUGen Nothing [AR] (Left rate) "FoaZoomZ" [in_,angle] Nothing 4 (Special 0) NoId
-
--- | calculates spectral MSE distance of two fft chains
---
---  FrameCompare [KR] buffer1=0.0 buffer2=0.0 wAmount=0.5
-frameCompare :: Rate -> UGen -> UGen -> UGen -> UGen
-frameCompare rate buffer1 buffer2 wAmount = mkUGen Nothing [KR] (Left rate) "FrameCompare" [buffer1,buffer2,wAmount] Nothing 1 (Special 0) NoId
-
--- | A physical model of a system with dry-friction. A chaotic filter.
---
---  Friction [KR,AR] in=0.0 friction=0.5 spring=0.414 damp=0.313 mass=0.1 beltmass=1.0
-friction :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-friction rate in_ friction_ spring_ damp mass beltmass = mkUGen Nothing [KR,AR] (Left rate) "Friction" [in_,friction_,spring_,damp,mass,beltmass] Nothing 1 (Special 0) NoId
-
--- | Single gammatone filter
---
---  Gammatone [AR] input=0.0 centrefrequency=440.0 bandwidth=200.0
-gammatone :: Rate -> UGen -> UGen -> UGen -> UGen
-gammatone rate input centrefrequency bandwidth = mkUGen Nothing [AR] (Left rate) "Gammatone" [input,centrefrequency,bandwidth] Nothing 1 (Special 0) NoId
-
--- | Gaussian classifier
---
---  GaussClass [KR] in=0.0 bufnum=0.0 gate=0.0
-gaussClass :: Rate -> UGen -> UGen -> UGen -> UGen
-gaussClass rate in_ bufnum gate_ = mkUGen Nothing [KR] (Left rate) "GaussClass" [in_,bufnum,gate_] Nothing 1 (Special 0) NoId
-
--- | impulses around a certain frequency
---
---  GaussTrig [KR,AR] freq=440.0 dev=0.3
-gaussTrig :: Rate -> UGen -> UGen -> UGen
-gaussTrig rate freq dev = mkUGen Nothing [KR,AR] (Left rate) "GaussTrig" [freq,dev] Nothing 1 (Special 0) NoId
-
--- | gingerbreadman map 2D chaotic generator
---
---  Gbman2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 x0=1.2 y0=2.1
-gbman2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-gbman2DC rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Gbman2DC" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId
-
--- | gingerbreadman map 2D chaotic generator
---
---  Gbman2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 x0=1.2 y0=2.1
-gbman2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-gbman2DL rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Gbman2DL" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId
-
--- | gingerbreadman map 2D chaotic generator
---
---  Gbman2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 x0=1.2 y0=2.1
-gbman2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-gbman2DN rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Gbman2DN" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  GbmanTrig [KR,AR] minfreq=5.0 maxfreq=10.0 x0=1.2 y0=2.1
-gbmanTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-gbmanTrig rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "GbmanTrig" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId
-
--- | Dynamic stochastic synthesis generator
---
---  Gendy4 [KR,AR] ampdist=1.0 durdist=1.0 adparam=1.0 ddparam=1.0 minfreq=440.0 maxfreq=660.0 ampscale=0.5 durscale=0.5 initCPs=12.0 knum=0.0
-gendy4 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-gendy4 rate ampdist durdist adparam ddparam minfreq maxfreq ampscale durscale initCPs knum = mkUGen Nothing [KR,AR] (Left rate) "Gendy4" [ampdist,durdist,adparam,ddparam,minfreq,maxfreq,ampscale,durscale,initCPs,knum] Nothing 1 (Special 0) NoId
-
--- | Dynamic stochastic synthesis generator
---
---  Gendy5 [KR,AR] ampdist=1.0 durdist=1.0 adparam=1.0 ddparam=1.0 minfreq=440.0 maxfreq=660.0 ampscale=0.5 durscale=0.5 initCPs=12.0 knum=0.0
-gendy5 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-gendy5 rate ampdist durdist adparam ddparam minfreq maxfreq ampscale durscale initCPs knum = mkUGen Nothing [KR,AR] (Left rate) "Gendy5" [ampdist,durdist,adparam,ddparam,minfreq,maxfreq,ampscale,durscale,initCPs,knum] Nothing 1 (Special 0) NoId
-
--- | Read (numeric) shell environment variables into a synth
---
---  Getenv [] key=0.0 defaultval=0.0
-getenv :: Rate -> UGen -> UGen -> UGen
-getenv rate key defaultval = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Getenv" [key,defaultval] Nothing 1 (Special 0) NoId
-
--- | backward compatibility
---
---  GlitchBPF [KR,AR] in=0.0 freq=440.0 rq=1.0
-glitchBPF :: Rate -> UGen -> UGen -> UGen -> UGen
-glitchBPF rate in_ freq rq = mkUGen Nothing [KR,AR] (Left rate) "GlitchBPF" [in_,freq,rq] Nothing 1 (Special 0) NoId
-
--- | backward compatibility
---
---  GlitchBRF [KR,AR] in=0.0 freq=440.0 rq=1.0
-glitchBRF :: Rate -> UGen -> UGen -> UGen -> UGen
-glitchBRF rate in_ freq rq = mkUGen Nothing [KR,AR] (Left rate) "GlitchBRF" [in_,freq,rq] Nothing 1 (Special 0) NoId
-
--- | backward compatibility
---
---  GlitchHPF [KR,AR] in=0.0 freq=440.0
-glitchHPF :: Rate -> UGen -> UGen -> UGen
-glitchHPF rate in_ freq = mkUGen Nothing [KR,AR] (Left rate) "GlitchHPF" [in_,freq] Nothing 1 (Special 0) NoId
-
--- | backward compatibility
---
---  GlitchRHPF [KR,AR] in=0.0 freq=440.0 rq=1.0
-glitchRHPF :: Rate -> UGen -> UGen -> UGen -> UGen
-glitchRHPF rate in_ freq rq = mkUGen Nothing [KR,AR] (Left rate) "GlitchRHPF" [in_,freq,rq] Nothing 1 (Special 0) NoId
-
--- | Calculate a single DFT bin, to detect presence of a frequency
---
---  Goertzel [KR] in=0.0 bufsize=1024.0 freq=0.0 hop=1.0
-goertzel :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-goertzel rate in_ bufsize freq hop = mkUGen Nothing [KR] (Left rate) "Goertzel" [in_,bufsize,freq,hop] Nothing 2 (Special 0) NoId
-
--- | (Undocumented class)
---
---  GrainBufJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 loop=0.0 interp=2.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0
-grainBufJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-grainBufJ rate numChannels trigger dur sndbuf rate_ pos loop interp grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainBufJ" [numChannels,trigger,dur,sndbuf,rate_,pos,loop,interp,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  GrainFMJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0
-grainFMJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-grainFMJ rate numChannels trigger dur carfreq modfreq index_ grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainFMJ" [numChannels,trigger,dur,carfreq,modfreq,index_,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  GrainInJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 in=0.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0
-grainInJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-grainInJ rate numChannels trigger dur in_ grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainInJ" [numChannels,trigger,dur,in_,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  GrainSinJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 freq=440.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0
-grainSinJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-grainSinJ rate numChannels trigger dur freq grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainSinJ" [numChannels,trigger,dur,freq,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId
-
--- | dynamical system simulation (Newtonian gravitational force)
---
---  GravityGrid [AR] reset=0.0 rate=0.1 newx=0.0 newy=0.0 bufnum=0.0
-gravityGrid :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-gravityGrid rate reset rate_ newx newy bufnum = mkUGen Nothing [AR] (Left rate) "GravityGrid" [reset,rate_,newx,newy,bufnum] Nothing 1 (Special 0) NoId
-
--- | dynamical system simulation (Newtonian gravitational force)
---
---  GravityGrid2 [AR] reset=0.0 rate=0.1 newx=0.0 newy=0.0 bufnum=0.0
-gravityGrid2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-gravityGrid2 rate reset rate_ newx newy bufnum = mkUGen Nothing [AR] (Left rate) "GravityGrid2" [reset,rate_,newx,newy,bufnum] Nothing 1 (Special 0) NoId
-
--- | algorithmic delay
---
---  GreyholeRaw [AR] in1=0.0 in2=0.0 damping=0.0 delaytime=2.0 diffusion=0.5 feedback=0.9 moddepth=0.1 modfreq=2.0 size=1.0
-greyholeRaw :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-greyholeRaw in1 in2 damping delaytime diffusion feedback moddepth modfreq size = mkUGen Nothing [AR] (Right [0,1]) "GreyholeRaw" [in1,in2,damping,delaytime,diffusion,feedback,moddepth,modfreq,size] Nothing 2 (Special 0) NoId
-
--- | Simple cochlear hair cell model
---
---  HairCell [KR,AR] input=0.0 spontaneousrate=0.0 boostrate=200.0 restorerate=1000.0 loss=0.99
-hairCell :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-hairCell rate input spontaneousrate boostrate restorerate loss = mkUGen Nothing [KR,AR] (Left rate) "HairCell" [input,spontaneousrate,boostrate,restorerate,loss] Nothing 1 (Special 0) NoId
-
--- | henon map 2D chaotic generator
---
---  Henon2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933
-henon2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-henon2DC rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Henon2DC" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId
-
--- | henon map 2D chaotic generator
---
---  Henon2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933
-henon2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-henon2DL rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Henon2DL" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId
-
--- | henon map 2D chaotic generator
---
---  Henon2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933
-henon2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-henon2DN rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Henon2DN" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  HenonTrig [KR,AR] minfreq=5.0 maxfreq=10.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933
-henonTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-henonTrig rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "HenonTrig" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId
-
--- | Transform a cepstrum back to a spectrum
---
---  ICepstrum [] cepchain=0.0 fftbuf=0.0
-iCepstrum :: Rate -> UGen -> UGen -> UGen
-iCepstrum rate cepchain fftbuf = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "ICepstrum" [cepchain,fftbuf] Nothing 1 (Special 0) NoId
-
--- | 24db/oct rolloff, 4nd order resonant Low Pass Filter
---
---  IIRFilter [AR] in=0.0 freq=440.0 rq=1.0
-iirFilter :: UGen -> UGen -> UGen -> UGen
-iirFilter in_ freq rq = mkUGen Nothing [AR] (Right [0]) "IIRFilter" [in_,freq,rq] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  InGrain [AR] trigger=0.0 dur=1.0 in=0.0
-inGrain :: Rate -> UGen -> UGen -> UGen -> UGen
-inGrain rate trigger dur in_ = mkUGen Nothing [AR] (Left rate) "InGrain" [trigger,dur,in_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  InGrainB [AR] trigger=0.0 dur=1.0 in=0.0 envbuf=0.0
-inGrainB :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-inGrainB rate trigger dur in_ envbuf = mkUGen Nothing [AR] (Left rate) "InGrainB" [trigger,dur,in_,envbuf] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  InGrainBBF [AR] trigger=0.0 dur=1.0 in=0.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
-inGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-inGrainBBF rate trigger dur in_ envbuf azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "InGrainBBF" [trigger,dur,in_,envbuf,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  InGrainBF [AR] trigger=0.0 dur=1.0 in=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
-inGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-inGrainBF rate trigger dur in_ azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "InGrainBF" [trigger,dur,in_,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  InGrainI [AR] trigger=0.0 dur=1.0 in=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5
-inGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-inGrainI rate trigger dur in_ envbuf1 envbuf2 ifac = mkUGen Nothing [AR] (Left rate) "InGrainI" [trigger,dur,in_,envbuf1,envbuf2,ifac] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  InGrainIBF [AR] trigger=0.0 dur=1.0 in=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
-inGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-inGrainIBF rate trigger dur in_ envbuf1 envbuf2 ifac azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "InGrainIBF" [trigger,dur,in_,envbuf1,envbuf2,ifac,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
-
--- | Distortion by subtracting magnitude from 1
---
---  InsideOut [KR,AR] in=0.0
-insideOut :: Rate -> UGen -> UGen
-insideOut rate in_ = mkUGen Nothing [KR,AR] (Left rate) "InsideOut" [in_] Nothing 1 (Special 0) NoId
-
--- | instruction synthesis (breakpoint set interpreter)
---
---  Instruction [AR] bufnum=0.0
-instruction :: Rate -> UGen -> UGen
-instruction rate bufnum = mkUGen Nothing [AR] (Left rate) "Instruction" [bufnum] Nothing 1 (Special 0) NoId
-
--- | Raw version of the JPverb algorithmic reverberator, designed to produce long tails with chorusing
---
---  JPverbRaw [KR,AR] in1=0.0 in2=0.0 damp=0.0 earlydiff=0.707 highband=2000.0 highx=1.0 lowband=500.0 lowx=1.0 mdepth=0.1 mfreq=2.0 midx=1.0 size=1.0 t60=1.0;    FILTER: TRUE
-jPverbRaw :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-jPverbRaw in1 in2 damp earlydiff highband highx lowband lowx mdepth mfreq midx size t60 = mkUGen Nothing [KR,AR] (Right [0]) "JPverbRaw" [in1,in2,damp,earlydiff,highband,highx,lowband,lowx,mdepth,mfreq,midx,size,t60] Nothing 2 (Special 0) NoId
-
--- | (Undocumented class)
---
---  JoshGrain [] maxSize=0.0
-joshGrain :: Rate -> UGen -> UGen
-joshGrain rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "JoshGrain" [maxSize] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  JoshMultiChannelGrain [] maxSize=0.0
-joshMultiChannelGrain :: Rate -> UGen -> UGen
-joshMultiChannelGrain rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "JoshMultiChannelGrain" [maxSize] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  JoshMultiOutGrain [] maxSize=0.0
-joshMultiOutGrain :: Rate -> UGen -> UGen
-joshMultiOutGrain rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "JoshMultiOutGrain" [maxSize] Nothing 1 (Special 0) NoId
-
--- | k-means classification in real time
---
---  KMeansRT [KR] bufnum=0.0 inputdata=0.0 k=5.0 gate=1.0 reset=0.0 learn=1.0
-kMeansRT :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-kMeansRT rate bufnum inputdata k gate_ reset learn = mkUGen Nothing [KR] (Left rate) "KMeansRT" [bufnum,inputdata,k,gate_,reset,learn] Nothing 1 (Special 0) NoId
-
--- | Running score of maximum correlation of chromagram with key profiles
---
---  KeyClarity [KR] chain=0.0 keydecay=2.0 chromaleak=0.5
-keyClarity :: Rate -> UGen -> UGen -> UGen -> UGen
-keyClarity rate chain keydecay chromaleak = mkUGen Nothing [KR] (Left rate) "KeyClarity" [chain,keydecay,chromaleak] Nothing 1 (Special 0) NoId
-
--- | Find best correlated key mode with chromagram between major, minor and chromatic cluster
---
---  KeyMode [KR] chain=0.0 keydecay=2.0 chromaleak=0.5
-keyMode :: Rate -> UGen -> UGen -> UGen -> UGen
-keyMode rate chain keydecay chromaleak = mkUGen Nothing [KR] (Left rate) "KeyMode" [chain,keydecay,chromaleak] Nothing 1 (Special 0) NoId
-
--- | K-means Oscillator
---
---  KmeansToBPSet1 [AR] freq=440.0 numdatapoints=20.0 maxnummeans=4.0 nummeans=4.0 tnewdata=1.0 tnewmeans=1.0 soft=1.0 bufnum=0.0
-kmeansToBPSet1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-kmeansToBPSet1 rate freq numdatapoints maxnummeans nummeans tnewdata tnewmeans soft bufnum = mkUGen Nothing [AR] (Left rate) "KmeansToBPSet1" [freq,numdatapoints,maxnummeans,nummeans,tnewdata,tnewmeans,soft,bufnum] Nothing 1 (Special 0) NoId
-
--- | random walk step
---
---  LFBrownNoise0 [KR,AR] freq=20.0 dev=1.0 dist=0.0;    NONDET
-lfBrownNoise0 :: ID a => a -> Rate -> UGen -> UGen -> UGen -> UGen
-lfBrownNoise0 z rate freq dev dist = mkUGen Nothing [KR,AR] (Left rate) "LFBrownNoise0" [freq,dev,dist] Nothing 1 (Special 0) (toUId z)
-
--- | random walk linear interp
---
---  LFBrownNoise1 [KR,AR] freq=20.0 dev=1.0 dist=0.0;    NONDET
-lfBrownNoise1 :: ID a => a -> Rate -> UGen -> UGen -> UGen -> UGen
-lfBrownNoise1 z rate freq dev dist = mkUGen Nothing [KR,AR] (Left rate) "LFBrownNoise1" [freq,dev,dist] Nothing 1 (Special 0) (toUId z)
-
--- | random walk cubic interp
---
---  LFBrownNoise2 [KR,AR] freq=20.0 dev=1.0 dist=0.0;    NONDET
-lfBrownNoise2 :: ID a => a -> Rate -> UGen -> UGen -> UGen -> UGen
-lfBrownNoise2 z rate freq dev dist = mkUGen Nothing [KR,AR] (Left rate) "LFBrownNoise2" [freq,dev,dist] Nothing 1 (Special 0) (toUId z)
-
--- | Live Linear Predictive Coding Analysis and Resynthesis
---
---  LPCAnalyzer [AR] input=0.0 source=1.0e-2 n=256.0 p=10.0 testE=0.0 delta=0.999 windowtype=0.0;    FILTER: TRUE
-lpcAnalyzer :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-lpcAnalyzer input source n p testE delta windowtype = mkUGen Nothing [AR] (Right [0,1]) "LPCAnalyzer" [input,source,n,p,testE,delta,windowtype] Nothing 1 (Special 0) NoId
-
--- | Linear Predictive Coding Gone Wrong
---
---  LPCError [AR] input=0.0 p=10.0
-lpcError :: Rate -> UGen -> UGen -> UGen
-lpcError rate input p = mkUGen Nothing [AR] (Left rate) "LPCError" [input,p] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  LPCSynth [AR] buffer=0.0 signal=0.0 pointer=0.0
-lpcSynth :: UGen -> UGen -> UGen -> UGen
-lpcSynth buffer signal pointer = mkUGen Nothing [AR] (Left AR) "LPCSynth" [buffer,signal,pointer] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  LPCVals [KR,AR] buffer=0.0 pointer=0.0
-lpcVals :: Rate -> UGen -> UGen -> UGen
-lpcVals rate buffer pointer = mkUGen Nothing [KR,AR] (Left rate) "LPCVals" [buffer,pointer] Nothing 3 (Special 0) NoId
-
--- | (Undocumented class)
---
---  LPF1 [KR,AR] in=0.0 freq=1000.0
-lPF1 :: Rate -> UGen -> UGen -> UGen
-lPF1 rate in_ freq = mkUGen Nothing [KR,AR] (Left rate) "LPF1" [in_,freq] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  LPF18 [AR] in=0.0 freq=100.0 res=1.0 dist=0.4
-lPF18 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-lPF18 rate in_ freq res dist = mkUGen Nothing [AR] (Left rate) "LPF18" [in_,freq,res,dist] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  LPFVS6 [KR,AR] in=0.0 freq=1000.0 slope=0.5
-lPFVS6 :: Rate -> UGen -> UGen -> UGen -> UGen
-lPFVS6 rate in_ freq slope_ = mkUGen Nothing [KR,AR] (Left rate) "LPFVS6" [in_,freq,slope_] Nothing 1 (Special 0) NoId
-
--- | Linear Time Invariant General Filter Equation
---
---  LTI [AR] input=0.0 bufnuma=0.0 bufnumb=1.0
-lti :: Rate -> UGen -> UGen -> UGen -> UGen
-lti rate input bufnuma bufnumb = mkUGen Nothing [AR] (Left rate) "LTI" [input,bufnuma,bufnumb] Nothing 1 (Special 0) NoId
-
--- | latoocarfian 2D chaotic generator
---
---  Latoocarfian2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332
-latoocarfian2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-latoocarfian2DC rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Latoocarfian2DC" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId
-
--- | latoocarfian 2D chaotic generator
---
---  Latoocarfian2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332
-latoocarfian2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-latoocarfian2DL rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Latoocarfian2DL" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId
-
--- | latoocarfian 2D chaotic generator
---
---  Latoocarfian2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332
-latoocarfian2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-latoocarfian2DN rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Latoocarfian2DN" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  LatoocarfianTrig [KR,AR] minfreq=5.0 maxfreq=10.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332
-latoocarfianTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-latoocarfianTrig rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "LatoocarfianTrig" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId
-
--- | Emit a sequence of triggers at specified time offsets
---
---  ListTrig [KR] bufnum=0.0 reset=0.0 offset=0.0 numframes=0.0
-listTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-listTrig rate bufnum reset offset numframes = mkUGen Nothing [KR] (Left rate) "ListTrig" [bufnum,reset,offset,numframes] Nothing 1 (Special 0) NoId
-
--- | Emit a sequence of triggers at specified time offsets
---
---  ListTrig2 [KR] bufnum=0.0 reset=0.0 numframes=0.0
-listTrig2 :: Rate -> UGen -> UGen -> UGen -> UGen
-listTrig2 rate bufnum reset numframes = mkUGen Nothing [KR] (Left rate) "ListTrig2" [bufnum,reset,numframes] Nothing 1 (Special 0) NoId
-
--- | Store values to a buffer, whenever triggered
---
---  Logger [KR] inputArray=0.0 trig=0.0 bufnum=0.0 reset=0.0
-logger :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-logger rate inputArray trig_ bufnum reset = mkUGen Nothing [KR] (Left rate) "Logger" [inputArray,trig_,bufnum,reset] Nothing 1 (Special 0) NoId
-
--- | sample looping oscillator
---
---  LoopBuf [AR] bufnum=0.0 rate=1.0 gate=1.0 startPos=0.0 startLoop=0.0 endLoop=0.0 interpolation=2.0;    NC INPUT: True
-loopBuf :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-loopBuf numChannels rate bufnum rate_ gate_ startPos startLoop endLoop interpolation = mkUGen Nothing [AR] (Left rate) "LoopBuf" [bufnum,rate_,gate_,startPos,startLoop,endLoop,interpolation] Nothing numChannels (Special 0) NoId
-
--- | lorenz 2D chaotic generator
---
---  Lorenz2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363
-lorenz2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-lorenz2DC rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "Lorenz2DC" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId
-
--- | lorenz 2D chaotic generator
---
---  Lorenz2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363
-lorenz2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-lorenz2DL rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "Lorenz2DL" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId
-
--- | lorenz 2D chaotic generator
---
---  Lorenz2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363
-lorenz2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-lorenz2DN rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "Lorenz2DN" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId
-
--- | lorenz chaotic trigger generator
---
---  LorenzTrig [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363
-lorenzTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-lorenzTrig rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "LorenzTrig" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  MCLDChaosGen [] maxSize=0.0
-mCLDChaosGen :: Rate -> UGen -> UGen
-mCLDChaosGen rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "MCLDChaosGen" [maxSize] Nothing 1 (Special 0) NoId
-
--- | First order Markov Chain implementation for audio signals
---
---  MarkovSynth [AR] in=0.0 isRecording=1.0 waitTime=2.0 tableSize=10.0
-markovSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-markovSynth rate in_ isRecording waitTime tableSize = mkUGen Nothing [AR] (Left rate) "MarkovSynth" [in_,isRecording,waitTime,tableSize] Nothing 1 (Special 0) NoId
-
--- | Real time sparse representation
---
---  MatchingP [KR,AR] dict=0.0 in=0.0 dictsize=1.0 ntofind=1.0 hop=1.0 method=0.0
-matchingP :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-matchingP rate dict in_ dictsize ntofind hop method = mkUGen Nothing [KR,AR] (Left rate) "MatchingP" [dict,in_,dictsize,ntofind,hop,method] Nothing 4 (Special 0) NoId
-
--- | maximum within last x samples
---
---  Max [KR] in=0.0 numsamp=64.0
-max :: Rate -> UGen -> UGen -> UGen
-max rate in_ numsamp = mkUGen Nothing [KR] (Left rate) "Max" [in_,numsamp] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Maxamp [AR] in=0.0 numSamps=1000.0
-maxamp :: Rate -> UGen -> UGen -> UGen
-maxamp rate in_ numSamps = mkUGen Nothing [AR] (Left rate) "Maxamp" [in_,numSamps] Nothing 1 (Special 0) NoId
-
--- | Piano synthesiser
---
---  MdaPiano [AR] freq=440.0 gate=1.0 vel=100.0 decay=0.8 release=0.8 hard=0.8 velhard=0.8 muffle=0.8 velmuff=0.8 velcurve=0.8 stereo=0.2 tune=0.5 random=0.1 stretch=0.1 sustain=0.0
-mdaPiano :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-mdaPiano rate freq gate_ vel decay_ release hard velhard muffle velmuff velcurve stereo tune random stretch sustain = mkUGen Nothing [AR] (Left rate) "MdaPiano" [freq,gate_,vel,decay_,release,hard,velhard,muffle,velmuff,velcurve,stereo,tune,random,stretch,sustain] Nothing 2 (Special 0) NoId
-
--- | Mean of recent values, triggered
---
---  MeanTriggered [KR,AR] in=0.0 trig=0.0 length=10.0
-meanTriggered :: Rate -> UGen -> UGen -> UGen -> UGen
-meanTriggered rate in_ trig_ length_ = mkUGen Nothing [KR,AR] (Left rate) "MeanTriggered" [in_,trig_,length_] Nothing 1 (Special 0) NoId
-
--- | Meddis cochlear hair cell model
---
---  Meddis [KR,AR] input=0.0
-meddis :: Rate -> UGen -> UGen
-meddis rate input = mkUGen Nothing [KR,AR] (Left rate) "Meddis" [input] Nothing 1 (Special 0) NoId
-
--- | Separate harmonic and percussive parts of a signal
---
---  MedianSeparation [] fft=0.0 fftharmonic=0.0 fftpercussive=0.0 fftsize=1024.0 mediansize=17.0 hardorsoft=0.0 p=2.0 medianormax=0.0
-medianSeparation :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-medianSeparation rate fft_ fftharmonic fftpercussive fftsize mediansize hardorsoft p medianormax = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "MedianSeparation" [fft_,fftharmonic,fftpercussive,fftsize,mediansize,hardorsoft,p,medianormax] Nothing 2 (Special 0) NoId
-
--- | Median of recent values, triggered
---
---  MedianTriggered [KR,AR] in=0.0 trig=0.0 length=10.0
-medianTriggered :: Rate -> UGen -> UGen -> UGen -> UGen
-medianTriggered rate in_ trig_ length_ = mkUGen Nothing [KR,AR] (Left rate) "MedianTriggered" [in_,trig_,length_] Nothing 1 (Special 0) NoId
-
--- | Waveguide mesh physical models of drum membranes
---
---  MembraneCircle [AR] excitation=0.0 tension=5.0e-2 loss=0.99999
-membraneCircle :: Rate -> UGen -> UGen -> UGen -> UGen
-membraneCircle rate excitation tension loss = mkUGen Nothing [AR] (Left rate) "MembraneCircle" [excitation,tension,loss] Nothing 1 (Special 0) NoId
-
--- | Waveguide mesh physical models of drum membranes
---
---  MembraneHexagon [AR] excitation=0.0 tension=5.0e-2 loss=0.99999
-membraneHexagon :: Rate -> UGen -> UGen -> UGen -> UGen
-membraneHexagon rate excitation tension loss = mkUGen Nothing [AR] (Left rate) "MembraneHexagon" [excitation,tension,loss] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Metro [KR,AR] bpm=0.0 numBeats=0.0
-metro :: Rate -> UGen -> UGen -> UGen
-metro rate bpm numBeats = mkUGen Nothing [KR,AR] (Left rate) "Metro" [bpm,numBeats] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  MonoGrain [AR] in=0.0 winsize=0.1 grainrate=10.0 winrandpct=0.0
-monoGrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-monoGrain rate in_ winsize grainrate winrandpct = mkUGen Nothing [AR] (Left rate) "MonoGrain" [in_,winsize,grainrate,winrandpct] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  MonoGrainBF [AR] in=0.0 winsize=0.1 grainrate=10.0 winrandpct=0.0 azimuth=0.0 azrand=0.0 elevation=0.0 elrand=0.0 rho=1.0
-monoGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-monoGrainBF rate in_ winsize grainrate winrandpct azimuth azrand elevation elrand rho = mkUGen Nothing [AR] (Left rate) "MonoGrainBF" [in_,winsize,grainrate,winrandpct,azimuth,azrand,elevation,elrand,rho] Nothing 4 (Special 0) NoId
-
--- | Moog Filter Emulation
---
---  MoogLadder [KR,AR] in=0.0 ffreq=440.0 res=0.0
-moogLadder :: UGen -> UGen -> UGen -> UGen
-moogLadder in_ ffreq res = mkUGen Nothing [KR,AR] (Right [0]) "MoogLadder" [in_,ffreq,res] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  MoogVCF [AR] in=0.0 fco=0.0 res=0.0
-moogVCF :: UGen -> UGen -> UGen -> UGen
-moogVCF in_ fco res = mkUGen Nothing [AR] (Right [0]) "MoogVCF" [in_,fco,res] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  MultiOutDemandUGen [DR] maxSize=0.0;    DEMAND/NONDET
-multiOutDemandUGen :: Rate -> UGen -> UGen
-multiOutDemandUGen rate maxSize = mkUGen Nothing [DR] (Left rate) "MultiOutDemandUGen" [maxSize] Nothing 1 (Special 0) NoId
-
--- | Stereo reverb
---
---  NHHall [AR] in1=0.0 in2=0.0 rt60=1.0 stereo=0.5 lowFreq=200.0 lowRatio=0.5 hiFreq=4000.0 hiRatio=0.5 earlyDiffusion=0.5 lateDiffusion=0.5 modRate=0.2 modDepth=0.3
-nhHall :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-nhHall in1 in2 rt60 stereo lowFreq lowRatio hiFreq hiRatio earlyDiffusion lateDiffusion modRate modDepth = mkUGen Nothing [AR] (Right [0,1]) "NHHall" [in1,in2,rt60,stereo,lowFreq,lowRatio,hiFreq,hiRatio,earlyDiffusion,lateDiffusion,modRate,modDepth] Nothing 2 (Special 0) NoId
-
--- | Non Linear Filter Equation
---
---  NL [AR] input=0.0 bufnuma=0.0 bufnumb=1.0 guard1=1000.0 guard2=100.0
-nl :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-nl rate input bufnuma bufnumb guard1 guard2 = mkUGen Nothing [AR] (Left rate) "NL" [input,bufnuma,bufnumb,guard1,guard2] Nothing 1 (Special 0) NoId
-
--- | Arbitrary Non Linear Filter Equation
---
---  NL2 [AR] input=0.0 bufnum=0.0 maxsizea=10.0 maxsizeb=10.0 guard1=1000.0 guard2=100.0
-nL2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-nL2 rate input bufnum maxsizea maxsizeb guard1 guard2 = mkUGen Nothing [AR] (Left rate) "NL2" [input,bufnum,maxsizea,maxsizeb,guard1,guard2] Nothing 1 (Special 0) NoId
-
--- | Non-linear Filter
---
---  NLFiltC [KR,AR] input=0.0 a=0.0 b=0.0 d=0.0 c=0.0 l=0.0
-nLFiltC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-nLFiltC rate input a b d c l = mkUGen Nothing [KR,AR] (Left rate) "NLFiltC" [input,a,b,d,c,l] Nothing 1 (Special 0) NoId
-
--- | Non-linear Filter
---
---  NLFiltL [KR,AR] input=0.0 a=0.0 b=0.0 d=0.0 c=0.0 l=0.0
-nLFiltL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-nLFiltL rate input a b d c l = mkUGen Nothing [KR,AR] (Left rate) "NLFiltL" [input,a,b,d,c,l] Nothing 1 (Special 0) NoId
-
--- | Non-linear Filter
---
---  NLFiltN [KR,AR] input=0.0 a=0.0 b=0.0 d=0.0 c=0.0 l=0.0
-nLFiltN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-nLFiltN rate input a b d c l = mkUGen Nothing [KR,AR] (Left rate) "NLFiltN" [input,a,b,d,c,l] Nothing 1 (Special 0) NoId
-
--- | physical modeling simulation; N tubes
---
---  NTube [AR] input=0.0 lossarray=1.0 karray=0.0 delaylengtharray=0.0
-nTube :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-nTube rate input lossarray karray delaylengtharray = mkUGen Nothing [AR] (Left rate) "NTube" [input,lossarray,karray,delaylengtharray] Nothing 1 (Special 0) NoId
-
--- | Find the nearest-neighbours in a set of points
---
---  NearestN [KR] treebuf=0.0 in=0.0 gate=1.0 num=1.0
-nearestN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-nearestN rate treebuf in_ gate_ num = mkUGen Nothing [KR] (Left rate) "NearestN" [treebuf,in_,gate_,num] Nothing 3 (Special 0) NoId
-
--- | (Undocumented class)
---
---  NeedleRect [AR] rate=1.0 imgWidth=100.0 imgHeight=100.0 rectX=0.0 rectY=0.0 rectW=100.0 rectH=100.0
-needleRect :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-needleRect rate rate_ imgWidth imgHeight rectX rectY rectW rectH = mkUGen Nothing [AR] (Left rate) "NeedleRect" [rate_,imgWidth,imgHeight,rectX,rectY,rectW,rectH] Nothing 1 (Special 0) NoId
-
--- | Nested Allpass filters as proposed by Vercoe and Pluckett
---
---  NestedAllpassC [AR] in=0.0 maxdelay1=3.6e-2 delay1=3.6e-2 gain1=8.0e-2 maxdelay2=3.0e-2 delay2=3.0e-2 gain2=0.3;    FILTER: TRUE
-nestedAllpassC :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-nestedAllpassC in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 = mkUGen Nothing [AR] (Right [0]) "NestedAllpassC" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2] Nothing 1 (Special 0) NoId
-
--- | Nested Allpass filters as proposed by Vercoe and Pluckett
---
---  NestedAllpassL [AR] in=0.0 maxdelay1=3.6e-2 delay1=3.6e-2 gain1=8.0e-2 maxdelay2=3.0e-2 delay2=3.0e-2 gain2=0.3;    FILTER: TRUE
-nestedAllpassL :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-nestedAllpassL in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 = mkUGen Nothing [AR] (Right [0]) "NestedAllpassL" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2] Nothing 1 (Special 0) NoId
-
--- | Nested Allpass filters as proposed by Vercoe and Pluckett
---
---  NestedAllpassN [AR] in=0.0 maxdelay1=3.6e-2 delay1=3.6e-2 gain1=8.0e-2 maxdelay2=3.0e-2 delay2=3.0e-2 gain2=0.3;    FILTER: TRUE
-nestedAllpassN :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-nestedAllpassN in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 = mkUGen Nothing [AR] (Right [0]) "NestedAllpassN" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  OSFold4 [AR] in=0.0 lo=0.0 hi=0.0
-oSFold4 :: Rate -> UGen -> UGen -> UGen -> UGen
-oSFold4 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSFold4" [in_,lo,hi] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  OSFold8 [AR] in=0.0 lo=0.0 hi=0.0
-oSFold8 :: Rate -> UGen -> UGen -> UGen -> UGen
-oSFold8 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSFold8" [in_,lo,hi] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  OSTrunc4 [AR] in=0.0 quant=0.5
-oSTrunc4 :: Rate -> UGen -> UGen -> UGen
-oSTrunc4 rate in_ quant = mkUGen Nothing [AR] (Left rate) "OSTrunc4" [in_,quant] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  OSTrunc8 [AR] in=0.0 quant=0.5
-oSTrunc8 :: Rate -> UGen -> UGen -> UGen
-oSTrunc8 rate in_ quant = mkUGen Nothing [AR] (Left rate) "OSTrunc8" [in_,quant] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  OSWrap4 [AR] in=0.0 lo=0.0 hi=0.0
-oSWrap4 :: Rate -> UGen -> UGen -> UGen -> UGen
-oSWrap4 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSWrap4" [in_,lo,hi] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  OSWrap8 [AR] in=0.0 lo=0.0 hi=0.0
-oSWrap8 :: Rate -> UGen -> UGen -> UGen -> UGen
-oSWrap8 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSWrap8" [in_,lo,hi] Nothing 1 (Special 0) NoId
-
--- | Extract basic statistics from a series of onset triggers
---
---  OnsetStatistics [KR] input=0.0 windowsize=1.0 hopsize=0.1
-onsetStatistics :: Rate -> UGen -> UGen -> UGen -> UGen
-onsetStatistics rate input windowsize hopsize = mkUGen Nothing [KR] (Left rate) "OnsetStatistics" [input,windowsize,hopsize] Nothing 3 (Special 0) NoId
-
--- | Chemical reaction modelling Oscillator
---
---  Oregonator [AR] reset=0.0 rate=1.0e-2 epsilon=1.0 mu=1.0 q=1.0 initx=0.5 inity=0.5 initz=0.5
-oregonator :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-oregonator rate reset rate_ epsilon mu q initx inity initz = mkUGen Nothing [AR] (Left rate) "Oregonator" [reset,rate_,epsilon,mu,q,initx,inity,initz] Nothing 3 (Special 0) NoId
-
--- | Piano physical model.
---
---  OteyPiano [AR] freq=440.0 vel=1.0 t_gate=0.0 rmin=0.35 rmax=2.0 rampl=4.0 rampr=8.0 rcore=1.0 lmin=7.0e-2 lmax=1.4 lampl=-4.0 lampr=4.0 rho=1.0 e=1.0 zb=1.0 zh=0.0 mh=1.0 k=0.2 alpha=1.0 p=1.0 hpos=0.142 loss=1.0 detune=3.0e-4 hammer_type=1.0
-oteyPiano :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-oteyPiano rate freq vel t_gate rmin rmax rampl rampr rcore lmin lmax lampl lampr rho e zb zh mh k alpha p hpos loss detune hammer_type = mkUGen Nothing [AR] (Left rate) "OteyPiano" [freq,vel,t_gate,rmin,rmax,rampl,rampr,rcore,lmin,lmax,lampl,lampr,rho,e,zb,zh,mh,k,alpha,p,hpos,loss,detune,hammer_type] Nothing 1 (Special 0) NoId
-
--- | Piano physical model.
---
---  OteyPianoStrings [AR] freq=440.0 vel=1.0 t_gate=0.0 rmin=0.35 rmax=2.0 rampl=4.0 rampr=8.0 rcore=1.0 lmin=7.0e-2 lmax=1.4 lampl=-4.0 lampr=4.0 rho=1.0 e=1.0 zb=1.0 zh=0.0 mh=1.0 k=0.2 alpha=1.0 p=1.0 hpos=0.142 loss=1.0 detune=3.0e-4 hammer_type=1.0
-oteyPianoStrings :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-oteyPianoStrings rate freq vel t_gate rmin rmax rampl rampr rcore lmin lmax lampl lampr rho e zb zh mh k alpha p hpos loss detune hammer_type = mkUGen Nothing [AR] (Left rate) "OteyPianoStrings" [freq,vel,t_gate,rmin,rmax,rampl,rampr,rcore,lmin,lmax,lampl,lampr,rho,e,zb,zh,mh,k,alpha,p,hpos,loss,detune,hammer_type] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  OteySoundBoard [AR] inp=0.0 c1=20.0 c3=20.0 mix=0.8
-oteySoundBoard :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-oteySoundBoard rate inp c1 c3 mix = mkUGen Nothing [AR] (Left rate) "OteySoundBoard" [inp,c1,c3,mix] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PVInfo [KR,AR] pvbuffer=0.0 binNum=0.0 filePointer=0.0
-pVInfo :: Rate -> UGen -> UGen -> UGen -> UGen
-pVInfo rate pvbuffer binNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "PVInfo" [pvbuffer,binNum,filePointer] Nothing 2 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PVSynth [AR] pvbuffer=0.0 numBins=0.0 binStart=0.0 binSkip=1.0 filePointer=0.0 freqMul=1.0 freqAdd=0.0
-pVSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-pVSynth rate pvbuffer numBins binStart binSkip filePointer freqMul freqAdd = mkUGen Nothing [AR] (Left rate) "PVSynth" [pvbuffer,numBins,binStart,binSkip,filePointer,freqMul,freqAdd] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_BinBufRd [KR] buffer=0.0 playbuf=0.0 point=1.0 binStart=0.0 binSkip=1.0 numBins=1.0 clear=0.0
-pv_BinBufRd :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-pv_BinBufRd buffer playbuf_ point binStart binSkip numBins clear = mkUGen Nothing [KR] (Left KR) "PV_BinBufRd" [buffer,playbuf_,point,binStart,binSkip,numBins,clear] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_BinDelay [KR] buffer=0.0 maxdelay=0.0 delaybuf=0.0 fbbuf=0.0 hop=0.5
-pv_BinDelay :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-pv_BinDelay buffer maxdelay delaybuf fbbuf hop = mkUGen Nothing [KR] (Left KR) "PV_BinDelay" [buffer,maxdelay,delaybuf,fbbuf,hop] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_BinFilter [KR] buffer=0.0 start=0.0 end=0.0
-pv_BinFilter :: UGen -> UGen -> UGen -> UGen
-pv_BinFilter buffer start end = mkUGen Nothing [KR] (Left KR) "PV_BinFilter" [buffer,start,end] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_BinPlayBuf [KR] buffer=0.0 playbuf=0.0 rate=1.0 offset=0.0 binStart=0.0 binSkip=1.0 numBins=1.0 loop=0.0 clear=0.0
-pv_BinPlayBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-pv_BinPlayBuf buffer playbuf_ rate_ offset binStart binSkip numBins loop clear = mkUGen Nothing [KR] (Left KR) "PV_BinPlayBuf" [buffer,playbuf_,rate_,offset,binStart,binSkip,numBins,loop,clear] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_BufRd [KR] buffer=0.0 playbuf=0.0 point=1.0
-pv_BufRd :: UGen -> UGen -> UGen -> UGen
-pv_BufRd buffer playbuf_ point = mkUGen Nothing [KR] (Left KR) "PV_BufRd" [buffer,playbuf_,point] Nothing 1 (Special 0) NoId
-
--- | returns common magnitudes
---
---  PV_CommonMag [KR] bufferA=0.0 bufferB=0.0 tolerance=0.0 remove=0.0
-pv_CommonMag :: UGen -> UGen -> UGen -> UGen -> UGen
-pv_CommonMag bufferA bufferB tolerance remove = mkUGen Nothing [KR] (Left KR) "PV_CommonMag" [bufferA,bufferB,tolerance,remove] Nothing 1 (Special 0) NoId
-
--- | multiplies common magnitudes
---
---  PV_CommonMul [KR] bufferA=0.0 bufferB=0.0 tolerance=0.0 remove=0.0
-pv_CommonMul :: UGen -> UGen -> UGen -> UGen -> UGen
-pv_CommonMul bufferA bufferB tolerance remove = mkUGen Nothing [KR] (Left KR) "PV_CommonMul" [bufferA,bufferB,tolerance,remove] Nothing 1 (Special 0) NoId
-
--- | simple spectral compression/expansion
---
---  PV_Compander [KR] buffer=0.0 thresh=50.0 slopeBelow=1.0 slopeAbove=1.0
-pv_Compander :: UGen -> UGen -> UGen -> UGen -> UGen
-pv_Compander buffer thresh slopeBelow slopeAbove = mkUGen Nothing [KR] (Left KR) "PV_Compander" [buffer,thresh,slopeBelow,slopeAbove] Nothing 1 (Special 0) NoId
-
--- | zero bins with interpolation
---
---  PV_Cutoff [KR] bufferA=0.0 bufferB=0.0 wipe=0.0
-pv_Cutoff :: UGen -> UGen -> UGen -> UGen
-pv_Cutoff bufferA bufferB wipe = mkUGen Nothing [KR] (Left KR) "PV_Cutoff" [bufferA,bufferB,wipe] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_EvenBin [KR] buffer=0.0
-pv_EvenBin :: UGen -> UGen
-pv_EvenBin buffer = mkUGen Nothing [KR] (Left KR) "PV_EvenBin" [buffer] Nothing 1 (Special 0) NoId
-
--- | extract a repeating loop out from audio
---
---  PV_ExtractRepeat [KR] buffer=0.0 loopbuf=0.0 loopdur=0.0 memorytime=30.0 which=0.0 ffthop=0.5 thresh=1.0
-pv_ExtractRepeat :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-pv_ExtractRepeat buffer loopbuf loopdur memorytime which ffthop thresh = mkUGen Nothing [KR] (Left KR) "PV_ExtractRepeat" [buffer,loopbuf,loopdur,memorytime,which,ffthop,thresh] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_Freeze [KR] buffer=0.0 freeze=0.0
-pv_Freeze :: UGen -> UGen -> UGen
-pv_Freeze buffer freeze = mkUGen Nothing [KR] (Left KR) "PV_Freeze" [buffer,freeze] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_FreqBuffer [KR] buffer=0.0 databuffer=0.0
-pv_FreqBuffer :: UGen -> UGen -> UGen
-pv_FreqBuffer buffer databuffer = mkUGen Nothing [KR] (Left KR) "PV_FreqBuffer" [buffer,databuffer] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_Invert [KR] buffer=0.0
-pv_Invert :: UGen -> UGen
-pv_Invert buffer = mkUGen Nothing [KR] (Left KR) "PV_Invert" [buffer] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_MagBuffer [KR] buffer=0.0 databuffer=0.0
-pv_MagBuffer :: UGen -> UGen -> UGen
-pv_MagBuffer buffer databuffer = mkUGen Nothing [KR] (Left KR) "PV_MagBuffer" [buffer,databuffer] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_MagExp [KR] buffer=0.0
-pv_MagExp :: UGen -> UGen
-pv_MagExp buffer = mkUGen Nothing [KR] (Left KR) "PV_MagExp" [buffer] Nothing 1 (Special 0) NoId
-
--- | reduces magnitudes above or below thresh
---
---  PV_MagGate [KR] buffer=0.0 thresh=1.0 remove=0.0
-pv_MagGate :: UGen -> UGen -> UGen -> UGen
-pv_MagGate buffer thresh remove = mkUGen Nothing [KR] (Left KR) "PV_MagGate" [buffer,thresh,remove] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_MagLog [KR] buffer=0.0
-pv_MagLog :: UGen -> UGen
-pv_MagLog buffer = mkUGen Nothing [KR] (Left KR) "PV_MagLog" [buffer] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_MagMap [KR] buffer=0.0 mapbuf=0.0
-pv_MagMap :: UGen -> UGen -> UGen
-pv_MagMap buffer mapbuf = mkUGen Nothing [KR] (Left KR) "PV_MagMap" [buffer,mapbuf] Nothing 1 (Special 0) NoId
-
--- | subtract spectral energy
---
---  PV_MagMinus [KR] bufferA=0.0 bufferB=0.0 remove=1.0
-pv_MagMinus :: UGen -> UGen -> UGen -> UGen
-pv_MagMinus bufferA bufferB remove = mkUGen Nothing [KR] (Left KR) "PV_MagMinus" [bufferA,bufferB,remove] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_MagMulAdd [KR] buffer=0.0
-pv_MagMulAdd :: UGen -> UGen
-pv_MagMulAdd buffer = mkUGen Nothing [KR] (Left KR) "PV_MagMulAdd" [buffer] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_MagScale [KR] bufferA=0.0 bufferB=0.0
-pv_MagScale :: UGen -> UGen -> UGen
-pv_MagScale bufferA bufferB = mkUGen Nothing [KR] (Left KR) "PV_MagScale" [bufferA,bufferB] Nothing 1 (Special 0) NoId
-
--- | Smooth spectral magnitudes over time
---
---  PV_MagSmooth [KR] buffer=0.0 factor=0.1
-pv_MagSmooth :: UGen -> UGen -> UGen
-pv_MagSmooth buffer factor = mkUGen Nothing [KR] (Left KR) "PV_MagSmooth" [buffer,factor] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_MagSubtract [KR] bufferA=0.0 bufferB=0.0 zerolimit=0.0
-pv_MagSubtract :: UGen -> UGen -> UGen -> UGen
-pv_MagSubtract bufferA bufferB zerolimit = mkUGen Nothing [KR] (Left KR) "PV_MagSubtract" [bufferA,bufferB,zerolimit] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_MaxMagN [KR] buffer=0.0 numbins=0.0
-pv_MaxMagN :: UGen -> UGen -> UGen
-pv_MaxMagN buffer numbins = mkUGen Nothing [KR] (Left KR) "PV_MaxMagN" [buffer,numbins] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_MinMagN [KR] buffer=0.0 numbins=0.0
-pv_MinMagN :: UGen -> UGen -> UGen
-pv_MinMagN buffer numbins = mkUGen Nothing [KR] (Left KR) "PV_MinMagN" [buffer,numbins] Nothing 1 (Special 0) NoId
-
--- | one kind of spectral morphing
---
---  PV_Morph [KR] bufferA=0.0 bufferB=0.0 morph=0.0
-pv_Morph :: UGen -> UGen -> UGen -> UGen
-pv_Morph bufferA bufferB morph = mkUGen Nothing [KR] (Left KR) "PV_Morph" [bufferA,bufferB,morph] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_NoiseSynthF [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0
-pv_NoiseSynthF :: UGen -> UGen -> UGen -> UGen -> UGen
-pv_NoiseSynthF buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_NoiseSynthF" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_NoiseSynthP [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0
-pv_NoiseSynthP :: UGen -> UGen -> UGen -> UGen -> UGen
-pv_NoiseSynthP buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_NoiseSynthP" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_OddBin [KR] buffer=0.0
-pv_OddBin :: UGen -> UGen
-pv_OddBin buffer = mkUGen Nothing [KR] (Left KR) "PV_OddBin" [buffer] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_PartialSynthF [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0
-pv_PartialSynthF :: UGen -> UGen -> UGen -> UGen -> UGen
-pv_PartialSynthF buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_PartialSynthF" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_PartialSynthP [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0
-pv_PartialSynthP :: UGen -> UGen -> UGen -> UGen -> UGen
-pv_PartialSynthP buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_PartialSynthP" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_PitchShift [KR] buffer=0.0 ratio=0.0
-pv_PitchShift :: UGen -> UGen -> UGen
-pv_PitchShift buffer ratio = mkUGen Nothing [KR] (Left KR) "PV_PitchShift" [buffer,ratio] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_PlayBuf [KR] buffer=0.0 playbuf=0.0 rate=1.0 offset=0.0 loop=0.0
-pv_PlayBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-pv_PlayBuf buffer playbuf_ rate_ offset loop = mkUGen Nothing [KR] (Left KR) "PV_PlayBuf" [buffer,playbuf_,rate_,offset,loop] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_RecordBuf [KR] buffer=0.0 recbuf=0.0 offset=0.0 run=0.0 loop=0.0 hop=0.5 wintype=0.0
-pv_RecordBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-pv_RecordBuf buffer recbuf offset run loop hop wintype = mkUGen Nothing [KR] (Left KR) "PV_RecordBuf" [buffer,recbuf,offset,run,loop,hop,wintype] Nothing 1 (Special 0) NoId
-
--- | combine low and high bins from two inputs with interpolation
---
---  PV_SoftWipe [KR] bufferA=0.0 bufferB=0.0 wipe=0.0
-pv_SoftWipe :: UGen -> UGen -> UGen -> UGen
-pv_SoftWipe bufferA bufferB wipe = mkUGen Nothing [KR] (Left KR) "PV_SoftWipe" [bufferA,bufferB,wipe] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_SpectralEnhance [KR] buffer=0.0 numPartials=8.0 ratio=2.0 strength=0.1
-pv_SpectralEnhance :: UGen -> UGen -> UGen -> UGen -> UGen
-pv_SpectralEnhance buffer numPartials ratio strength = mkUGen Nothing [KR] (Left KR) "PV_SpectralEnhance" [buffer,numPartials,ratio,strength] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_SpectralMap [KR] buffer=0.0 specBuffer=0.0 floor=0.0 freeze=0.0 mode=0.0 norm=0.0 window=0.0
-pv_SpectralMap :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-pv_SpectralMap buffer specBuffer floor_ freeze mode norm window = mkUGen Nothing [KR] (Left KR) "PV_SpectralMap" [buffer,specBuffer,floor_,freeze,mode,norm,window] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PV_Whiten [KR] chain=0.0 trackbufnum=0.0 relaxtime=2.0 floor=0.1 smear=0.0 bindownsample=0.0
-pv_Whiten :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-pv_Whiten chain trackbufnum relaxtime floor_ smear bindownsample = mkUGen Nothing [KR] (Left KR) "PV_Whiten" [chain,trackbufnum,relaxtime,floor_,smear,bindownsample] Nothing 1 (Special 0) NoId
-
--- | one kind of spectral morphing
---
---  PV_XFade [KR] bufferA=0.0 bufferB=0.0 fade=0.0
-pv_XFade :: UGen -> UGen -> UGen -> UGen
-pv_XFade bufferA bufferB fade = mkUGen Nothing [KR] (Left KR) "PV_XFade" [bufferA,bufferB,fade] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PanX [KR,AR] numChans=0.0 in=0.0 pos=0.0 level=1.0 width=2.0
-panX :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-panX rate numChans in_ pos level width = mkUGen Nothing [KR,AR] (Left rate) "PanX" [numChans,in_,pos,level,width] Nothing 0 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PanX2D [KR,AR] numChansX=0.0 numChansY=0.0 in=0.0 posX=0.0 posY=0.0 level=1.0 widthX=2.0 widthY=2.0
-panX2D :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-panX2D rate numChansX numChansY in_ posX posY level widthX widthY = mkUGen Nothing [KR,AR] (Left rate) "PanX2D" [numChansX,numChansY,in_,posX,posY,level,widthX,widthY] Nothing 0 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PeakEQ2 [AR] in=0.0 freq=1200.0 rs=1.0 db=0.0
-peakEQ2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-peakEQ2 rate in_ freq rs db = mkUGen Nothing [AR] (Left rate) "PeakEQ2" [in_,freq,rs,db] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PeakEQ4 [AR] in=0.0 freq=1200.0 rs=1.0 db=0.0
-peakEQ4 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-peakEQ4 rate in_ freq rs db = mkUGen Nothing [AR] (Left rate) "PeakEQ4" [in_,freq,rs,db] Nothing 1 (Special 0) NoId
-
--- | 3D Perlin Noise
---
---  Perlin3 [KR,AR] x=0.0 y=0.0 z=0.0
-perlin3 :: Rate -> UGen -> UGen -> UGen -> UGen
-perlin3 rate x y z = mkUGen Nothing [KR,AR] (Left rate) "Perlin3" [x,y,z] Nothing 1 (Special 0) NoId
-
--- | Tree classifier using (hyper)planes – UGen or language-side
---
---  PlaneTree [KR] treebuf=0.0 in=0.0 gate=1.0
-planeTree :: Rate -> UGen -> UGen -> UGen -> UGen
-planeTree rate treebuf in_ gate_ = mkUGen Nothing [KR] (Left rate) "PlaneTree" [treebuf,in_,gate_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  PosRatio [AR] in=0.0 period=100.0 thresh=0.1
-posRatio :: Rate -> UGen -> UGen -> UGen -> UGen
-posRatio rate in_ period thresh = mkUGen Nothing [AR] (Left rate) "PosRatio" [in_,period,thresh] Nothing 1 (Special 0) NoId
-
--- | debug assistance
---
---  PrintVal [KR] in=0.0 numblocks=100.0 id=0.0
-printVal :: Rate -> UGen -> UGen -> UGen -> UGen
-printVal rate in_ numblocks id_ = mkUGen Nothing [KR] (Left rate) "PrintVal" [in_,numblocks,id_] Nothing 1 (Special 0) NoId
-
--- | constant Q transform pitch follower
---
---  Qitch [KR] in=0.0 databufnum=0.0 ampThreshold=1.0e-2 algoflag=1.0 ampbufnum=0.0 minfreq=0.0 maxfreq=2500.0
-qitch :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-qitch rate in_ databufnum ampThreshold algoflag ampbufnum minfreq maxfreq = mkUGen Nothing [KR] (Left rate) "Qitch" [in_,databufnum,ampThreshold,algoflag,ampbufnum,minfreq,maxfreq] Nothing 2 (Special 0) NoId
-
--- | TB303 Filter Emulation
---
---  RLPFD [KR,AR] in=0.0 ffreq=440.0 res=0.0 dist=0.0
-rlpfd :: UGen -> UGen -> UGen -> UGen -> UGen
-rlpfd in_ ffreq res dist = mkUGen Nothing [KR,AR] (Right [0]) "RLPFD" [in_,ffreq,res,dist] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  RMAFoodChainL [AR] freq=22050.0 a1=5.0 b1=3.0 d1=0.4 a2=0.1 b2=2.0 d2=1.0e-2 k=1.0943 r=0.8904 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0
-rMAFoodChainL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-rMAFoodChainL rate freq a1 b1 d1 a2 b2 d2 k r h xi yi zi = mkUGen Nothing [AR] (Left rate) "RMAFoodChainL" [freq,a1,b1,d1,a2,b2,d2,k,r,h,xi,yi,zi] Nothing 3 (Special 0) NoId
-
--- | (Undocumented class)
---
---  RMEQ [AR] in=0.0 freq=440.0 rq=0.1 k=0.0
-rMEQ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-rMEQ rate in_ freq rq k = mkUGen Nothing [AR] (Left rate) "RMEQ" [in_,freq,rq,k] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  RMEQSuite [] maxSize=0.0
-rMEQSuite :: Rate -> UGen -> UGen
-rMEQSuite rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "RMEQSuite" [maxSize] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  RMShelf [AR] in=0.0 freq=440.0 k=0.0
-rMShelf :: Rate -> UGen -> UGen -> UGen -> UGen
-rMShelf rate in_ freq k = mkUGen Nothing [AR] (Left rate) "RMShelf" [in_,freq,k] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  RMShelf2 [AR] in=0.0 freq=440.0 k=0.0
-rMShelf2 :: Rate -> UGen -> UGen -> UGen -> UGen
-rMShelf2 rate in_ freq k = mkUGen Nothing [AR] (Left rate) "RMShelf2" [in_,freq,k] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  RegaliaMitraEQ [AR] in=0.0 freq=440.0 rq=0.1 k=0.0
-regaliaMitraEQ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-regaliaMitraEQ rate in_ freq rq k = mkUGen Nothing [AR] (Left rate) "RegaliaMitraEQ" [in_,freq,rq,k] Nothing 1 (Special 0) NoId
-
--- | Rossler chaotic generator
---
---  RosslerL [AR] freq=22050.0 a=0.2 b=0.2 c=5.7 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0
-rosslerL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-rosslerL rate freq a b c h xi yi zi = mkUGen Nothing [AR] (Left rate) "RosslerL" [freq,a,b,c,h,xi,yi,zi] Nothing 3 (Special 0) NoId
-
--- | (Undocumented class)
---
---  RosslerResL [AR] in=0.0 stiff=1.0 freq=22050.0 a=0.2 b=0.2 c=5.7 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0
-rosslerResL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-rosslerResL rate in_ stiff freq a b c h xi yi zi = mkUGen Nothing [AR] (Left rate) "RosslerResL" [in_,stiff,freq,a,b,c,h,xi,yi,zi] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Rotate [AR] w=0.0 x=0.0 y=0.0 z=0.0 rotate=0.0
-rotate :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-rotate rate w x y z rotate_ = mkUGen Nothing [AR] (Left rate) "Rotate" [w,x,y,z,rotate_] Nothing 1 (Special 0) NoId
-
--- | experimental time domain onset detector
---
---  SLOnset [KR] input=0.0 memorysize1=20.0 before=5.0 after=5.0 threshold=10.0 hysteresis=10.0
-sLOnset :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-sLOnset rate input memorysize1 before after threshold hysteresis = mkUGen Nothing [KR] (Left rate) "SLOnset" [input,memorysize1,before,after,threshold,hysteresis] Nothing 1 (Special 0) NoId
-
--- | Spectral Modeling Synthesis
---
---  SMS [AR] input=0.0 maxpeaks=80.0 currentpeaks=80.0 tolerance=4.0 noisefloor=0.2 freqmult=1.0 freqadd=0.0 formantpreserve=0.0 useifft=0.0 ampmult=1.0 graphicsbufnum=0.0;    FILTER: TRUE
-sms :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-sms input maxpeaks currentpeaks tolerance noisefloor freqmult freqadd formantpreserve useifft ampmult graphicsbufnum = mkUGen Nothing [AR] (Right [0]) "SMS" [input,maxpeaks,currentpeaks,tolerance,noisefloor,freqmult,freqadd,formantpreserve,useifft,ampmult,graphicsbufnum] Nothing 2 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SOMAreaWr [KR] bufnum=0.0 inputdata=0.0 coords=0.0 netsize=10.0 numdims=2.0 nhood=0.5 gate=1.0
-sOMAreaWr :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-sOMAreaWr rate bufnum inputdata coords netsize numdims nhood gate_ = mkUGen Nothing [KR] (Left rate) "SOMAreaWr" [bufnum,inputdata,coords,netsize,numdims,nhood,gate_] Nothing 1 (Special 0) NoId
-
--- | Map an input using a Self-Organising Map
---
---  SOMRd [KR,AR] bufnum=0.0 inputdata=0.0 netsize=10.0 numdims=2.0 gate=1.0
-sOMRd :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-sOMRd rate bufnum inputdata netsize numdims gate_ = mkUGen Nothing [KR,AR] (Left rate) "SOMRd" [bufnum,inputdata,netsize,numdims,gate_] Nothing 2 (Special 0) NoId
-
--- | Create (train) a Self-Organising Map
---
---  SOMTrain [KR] bufnum=0.0 inputdata=0.0 netsize=10.0 numdims=2.0 traindur=5000.0 nhood=0.5 gate=1.0 initweight=1.0
-sOMTrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-sOMTrain rate bufnum inputdata netsize numdims traindur nhood gate_ initweight = mkUGen Nothing [KR] (Left rate) "SOMTrain" [bufnum,inputdata,netsize,numdims,traindur,nhood,gate_,initweight] Nothing 3 (Special 0) NoId
-
--- | 12db/Oct State Variable Filter
---
---  SVF [KR,AR] signal=0.0 cutoff=2200.0 res=0.1 lowpass=1.0 bandpass=0.0 highpass=0.0 notch=0.0 peak=0.0
-svf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-svf signal cutoff res lowpass bandpass highpass notch peak_ = mkUGen Nothing [KR,AR] (Right [0]) "SVF" [signal,cutoff,res,lowpass,bandpass,highpass,notch,peak_] Nothing 1 (Special 0) NoId
-
--- | super-efficient sawtooth oscillator with low aliasing
---
---  SawDPW [KR,AR] freq=440.0 iphase=0.0
-sawDPW :: Rate -> UGen -> UGen -> UGen
-sawDPW rate freq iphase = mkUGen Nothing [KR,AR] (Left rate) "SawDPW" [freq,iphase] Nothing 1 (Special 0) NoId
-
--- | Perceptual feature modeling sensory dissonance
---
---  SensoryDissonance [KR] fft=0.0 maxpeaks=100.0 peakthreshold=0.1 norm=0.0 clamp=1.0
-sensoryDissonance :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-sensoryDissonance rate fft_ maxpeaks peakthreshold norm clamp = mkUGen Nothing [KR] (Left rate) "SensoryDissonance" [fft_,maxpeaks,peakthreshold,norm,clamp] Nothing 1 (Special 0) NoId
-
--- | Fuzzy sieve based synthesis
---
---  Sieve1 [KR,AR] bufnum=0.0 gap=2.0 alternate=1.0
-sieve1 :: Rate -> UGen -> UGen -> UGen -> UGen
-sieve1 rate bufnum gap alternate = mkUGen Nothing [KR,AR] (Left rate) "Sieve1" [bufnum,gap,alternate] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SinGrain [AR] trigger=0.0 dur=1.0 freq=440.0
-sinGrain :: Rate -> UGen -> UGen -> UGen -> UGen
-sinGrain rate trigger dur freq = mkUGen Nothing [AR] (Left rate) "SinGrain" [trigger,dur,freq] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SinGrainB [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf=0.0
-sinGrainB :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-sinGrainB rate trigger dur freq envbuf = mkUGen Nothing [AR] (Left rate) "SinGrainB" [trigger,dur,freq,envbuf] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SinGrainBBF [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
-sinGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-sinGrainBBF rate trigger dur freq envbuf azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "SinGrainBBF" [trigger,dur,freq,envbuf,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SinGrainBF [AR] trigger=0.0 dur=1.0 freq=440.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
-sinGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-sinGrainBF rate trigger dur freq azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "SinGrainBF" [trigger,dur,freq,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SinGrainI [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5
-sinGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-sinGrainI rate trigger dur freq envbuf1 envbuf2 ifac = mkUGen Nothing [AR] (Left rate) "SinGrainI" [trigger,dur,freq,envbuf1,envbuf2,ifac] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SinGrainIBF [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
-sinGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-sinGrainIBF rate trigger dur freq envbuf1 envbuf2 ifac azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "SinGrainIBF" [trigger,dur,freq,envbuf1,envbuf2,ifac,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SinTone [AR] freq=440.0 phase=0.0
-sinTone :: Rate -> UGen -> UGen -> UGen
-sinTone rate freq phase = mkUGen Nothing [AR] (Left rate) "SinTone" [freq,phase] Nothing 1 (Special 0) NoId
-
--- | port of some ladspa plugins
---
---  SineShaper [AR] in=0.0 limit=1.0
-sineShaper :: UGen -> UGen -> UGen
-sineShaper in_ limit = mkUGen Nothing [AR] (Right [0]) "SineShaper" [in_,limit] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SkipNeedle [AR] range=44100.0 rate=10.0 offset=0.0
-skipNeedle :: Rate -> UGen -> UGen -> UGen -> UGen
-skipNeedle rate range rate_ offset = mkUGen Nothing [AR] (Left rate) "SkipNeedle" [range,rate_,offset] Nothing 1 (Special 0) NoId
-
--- | port of some ladspa plugins
---
---  SmoothDecimator [AR] in=0.0 rate=44100.0 smoothing=0.5
-smoothDecimator :: Rate -> UGen -> UGen -> UGen -> UGen
-smoothDecimator rate in_ rate_ smoothing = mkUGen Nothing [AR] (Left rate) "SmoothDecimator" [in_,rate_,smoothing] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SoftClipAmp [AR] in=0.0 pregain=1.0
-softClipAmp :: Rate -> UGen -> UGen -> UGen
-softClipAmp rate in_ pregain = mkUGen Nothing [AR] (Left rate) "SoftClipAmp" [in_,pregain] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SoftClipAmp4 [AR] in=0.0 pregain=1.0
-softClipAmp4 :: Rate -> UGen -> UGen -> UGen
-softClipAmp4 rate in_ pregain = mkUGen Nothing [AR] (Left rate) "SoftClipAmp4" [in_,pregain] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SoftClipAmp8 [AR] in=0.0 pregain=1.0
-softClipAmp8 :: Rate -> UGen -> UGen -> UGen
-softClipAmp8 rate in_ pregain = mkUGen Nothing [AR] (Left rate) "SoftClipAmp8" [in_,pregain] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SoftClipper4 [AR] in=0.0
-softClipper4 :: Rate -> UGen -> UGen
-softClipper4 rate in_ = mkUGen Nothing [AR] (Left rate) "SoftClipper4" [in_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  SoftClipper8 [AR] in=0.0
-softClipper8 :: Rate -> UGen -> UGen
-softClipper8 rate in_ = mkUGen Nothing [AR] (Left rate) "SoftClipper8" [in_] Nothing 1 (Special 0) NoId
-
--- | Karplus-Strong via a sorting algorithm
---
---  SortBuf [AR] bufnum=0.0 sortrate=10.0 reset=0.0
-sortBuf :: Rate -> UGen -> UGen -> UGen -> UGen
-sortBuf rate bufnum sortrate reset = mkUGen Nothing [AR] (Left rate) "SortBuf" [bufnum,sortrate,reset] Nothing 1 (Special 0) NoId
-
--- | Spectral feature extraction
---
---  SpectralEntropy [KR] fft=0.0 fftsize=2048.0 numbands=1.0
-spectralEntropy :: Rate -> UGen -> UGen -> UGen -> UGen
-spectralEntropy rate fft_ fftsize numbands = mkUGen Nothing [KR] (Left rate) "SpectralEntropy" [fft_,fftsize,numbands] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Spreader [AR] in=0.0 theta=1.5707963267949 filtsPerOctave=8.0
-spreader :: Rate -> UGen -> UGen -> UGen -> UGen
-spreader rate in_ theta filtsPerOctave = mkUGen Nothing [AR] (Left rate) "Spreader" [in_,theta,filtsPerOctave] Nothing 2 (Special 0) NoId
-
--- | Spruce bud worm model equations
---
---  SpruceBudworm [AR] reset=0.0 rate=0.1 k1=27.9 k2=1.5 alpha=0.1 beta=10.1 mu=0.3 rho=10.1 initx=0.9 inity=0.1
-spruceBudworm :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-spruceBudworm rate reset rate_ k1 k2 alpha beta mu rho initx inity = mkUGen Nothing [AR] (Left rate) "SpruceBudworm" [reset,rate_,k1,k2,alpha,beta,mu,rho,initx,inity] Nothing 2 (Special 0) NoId
-
--- | Wave squeezer. Maybe a kind of pitch shifter.
---
---  Squiz [KR,AR] in=0.0 pitchratio=2.0 zcperchunk=1.0 memlen=0.1;    FILTER: TRUE
-squiz :: UGen -> UGen -> UGen -> UGen -> UGen
-squiz in_ pitchratio zcperchunk memlen = mkUGen Nothing [KR,AR] (Right [0]) "Squiz" [in_,pitchratio,zcperchunk,memlen] Nothing 1 (Special 0) NoId
-
--- | standard map 2D chaotic generator
---
---  Standard2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381
-standard2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-standard2DC rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Standard2DC" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId
-
--- | standard map 2D chaotic generator
---
---  Standard2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381
-standard2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-standard2DL rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Standard2DL" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId
-
--- | standard map 2D chaotic generator
---
---  Standard2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381
-standard2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-standard2DN rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Standard2DN" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  StkBandedWG [KR,AR] freq=440.0 instr=0.0 bowpressure=0.0 bowmotion=0.0 integration=0.0 modalresonance=64.0 bowvelocity=0.0 setstriking=0.0 trig=1.0
-stkBandedWG :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-stkBandedWG rate freq instr bowpressure bowmotion integration modalresonance bowvelocity setstriking trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkBandedWG" [freq,instr,bowpressure,bowmotion,integration,modalresonance,bowvelocity,setstriking,trig_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  StkBeeThree [KR,AR] freq=440.0 op4gain=10.0 op3gain=20.0 lfospeed=64.0 lfodepth=0.0 adsrtarget=64.0 trig=1.0
-stkBeeThree :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-stkBeeThree rate freq op4gain op3gain lfospeed lfodepth adsrtarget trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkBeeThree" [freq,op4gain,op3gain,lfospeed,lfodepth,adsrtarget,trig_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  StkBlowHole [KR,AR] freq=440.0 reedstiffness=64.0 noisegain=20.0 tonehole=64.0 register=11.0 breathpressure=64.0
-stkBlowHole :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-stkBlowHole rate freq reedstiffness noisegain tonehole register breathpressure = mkUGen Nothing [KR,AR] (Left rate) "StkBlowHole" [freq,reedstiffness,noisegain,tonehole,register,breathpressure] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  StkBowed [KR,AR] freq=220.0 bowpressure=64.0 bowposition=64.0 vibfreq=64.0 vibgain=64.0 loudness=64.0 gate=1.0 attackrate=1.0 decayrate=1.0
-stkBowed :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-stkBowed rate freq bowpressure bowposition vibfreq vibgain loudness_ gate_ attackrate decayrate = mkUGen Nothing [KR,AR] (Left rate) "StkBowed" [freq,bowpressure,bowposition,vibfreq,vibgain,loudness_,gate_,attackrate,decayrate] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  StkClarinet [KR,AR] freq=440.0 reedstiffness=64.0 noisegain=4.0 vibfreq=64.0 vibgain=11.0 breathpressure=64.0 trig=1.0
-stkClarinet :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-stkClarinet rate freq reedstiffness noisegain vibfreq vibgain breathpressure trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkClarinet" [freq,reedstiffness,noisegain,vibfreq,vibgain,breathpressure,trig_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  StkFlute [KR,AR] freq=440.0 jetDelay=49.0 noisegain=0.15 jetRatio=0.32
-stkFlute :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-stkFlute rate freq jetDelay noisegain jetRatio = mkUGen Nothing [KR,AR] (Left rate) "StkFlute" [freq,jetDelay,noisegain,jetRatio] Nothing 1 (Special 0) NoId
-
--- | Wrapping Synthesis toolkit.
---
---  StkGlobals [AR] showWarnings=0.0 printErrors=0.0 rawfilepath=0.0
-stkGlobals :: Rate -> UGen -> UGen -> UGen -> UGen
-stkGlobals rate showWarnings printErrors rawfilepath = mkUGen Nothing [AR] (Left rate) "StkGlobals" [showWarnings,printErrors,rawfilepath] Nothing 1 (Special 0) NoId
-
--- | Wrapping Synthesis toolkit.
---
---  StkInst [AR] instNumber=6.0 freq=220.0 gate=1.0 onamp=1.0 offamp=0.5 args=0.0
-stkInst :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-stkInst rate instNumber freq gate_ onamp offamp args = mkUGen Nothing [AR] (Left rate) "StkInst" [instNumber,freq,gate_,onamp,offamp,args] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  StkMandolin [KR,AR] freq=520.0 bodysize=64.0 pickposition=64.0 stringdamping=69.0 stringdetune=10.0 aftertouch=64.0 trig=1.0
-stkMandolin :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-stkMandolin rate freq bodysize pickposition stringdamping stringdetune aftertouch trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkMandolin" [freq,bodysize,pickposition,stringdamping,stringdetune,aftertouch,trig_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  StkModalBar [KR,AR] freq=440.0 instrument=0.0 stickhardness=64.0 stickposition=64.0 vibratogain=20.0 vibratofreq=20.0 directstickmix=64.0 volume=64.0 trig=1.0
-stkModalBar :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-stkModalBar rate freq instrument stickhardness stickposition vibratogain vibratofreq directstickmix volume trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkModalBar" [freq,instrument,stickhardness,stickposition,vibratogain,vibratofreq,directstickmix,volume,trig_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  StkMoog [KR,AR] freq=440.0 filterQ=10.0 sweeprate=20.0 vibfreq=64.0 vibgain=0.0 gain=64.0 trig=1.0
-stkMoog :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-stkMoog rate freq filterQ sweeprate vibfreq vibgain gain trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkMoog" [freq,filterQ,sweeprate,vibfreq,vibgain,gain,trig_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  StkPluck [KR,AR] freq=440.0 decay=0.99
-stkPluck :: Rate -> UGen -> UGen -> UGen
-stkPluck rate freq decay_ = mkUGen Nothing [KR,AR] (Left rate) "StkPluck" [freq,decay_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  StkSaxofony [KR,AR] freq=220.0 reedstiffness=64.0 reedaperture=64.0 noisegain=20.0 blowposition=26.0 vibratofrequency=20.0 vibratogain=20.0 breathpressure=128.0 trig=1.0
-stkSaxofony :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-stkSaxofony rate freq reedstiffness reedaperture noisegain blowposition vibratofrequency vibratogain breathpressure trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkSaxofony" [freq,reedstiffness,reedaperture,noisegain,blowposition,vibratofrequency,vibratogain,breathpressure,trig_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  StkShakers [KR,AR] instr=0.0 energy=64.0 decay=64.0 objects=64.0 resfreq=64.0
-stkShakers :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-stkShakers rate instr energy decay_ objects resfreq = mkUGen Nothing [KR,AR] (Left rate) "StkShakers" [instr,energy,decay_,objects,resfreq] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  StkVoicForm [KR,AR] freq=440.0 vuvmix=64.0 vowelphon=64.0 vibfreq=64.0 vibgain=20.0 loudness=64.0 trig=1.0
-stkVoicForm :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-stkVoicForm rate freq vuvmix vowelphon vibfreq vibgain loudness_ trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkVoicForm" [freq,vuvmix,vowelphon,vibfreq,vibgain,loudness_,trig_] Nothing 1 (Special 0) NoId
-
--- | String resonance filter
---
---  Streson [KR,AR] input=0.0 delayTime=3.0e-3 res=0.9
-streson :: UGen -> UGen -> UGen -> UGen
-streson input delayTime res = mkUGen Nothing [KR,AR] (Right [0]) "Streson" [input,delayTime,res] Nothing 1 (Special 0) NoId
-
--- | Pulse counter with floating point steps
---
---  Summer [KR,AR] trig=0.0 step=1.0 reset=0.0 resetval=0.0
-summer :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-summer rate trig_ step reset resetval = mkUGen Nothing [KR,AR] (Left rate) "Summer" [trig_,step,reset,resetval] Nothing 1 (Special 0) NoId
-
--- | feedback delay line implementing switch-and-ramp buffer jumping
---
---  SwitchDelay [AR] in=0.0 drylevel=1.0 wetlevel=1.0 delaytime=1.0 delayfactor=0.7 maxdelaytime=20.0
-switchDelay :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-switchDelay in_ drylevel wetlevel delaytime delayfactor maxdelaytime = mkUGen Nothing [AR] (Right [0]) "SwitchDelay" [in_,drylevel,wetlevel,delaytime,delayfactor,maxdelaytime] Nothing 1 (Special 0) NoId
-
--- | triggered beta random distribution
---
---  TBetaRand [KR,AR] lo=0.0 hi=1.0 prob1=0.0 prob2=0.0 trig=0.0;    FILTER: TRUE, NONDET
-tBetaRand :: ID a => a -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-tBetaRand z lo hi prob1 prob2 trig_ = mkUGen Nothing [KR,AR] (Right [4]) "TBetaRand" [lo,hi,prob1,prob2,trig_] Nothing 1 (Special 0) (toUId z)
-
--- | triggered random walk generator
---
---  TBrownRand [KR,AR] lo=0.0 hi=1.0 dev=1.0 dist=0.0 trig=0.0;    FILTER: TRUE, NONDET
-tBrownRand :: ID a => a -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-tBrownRand z lo hi dev dist trig_ = mkUGen Nothing [KR,AR] (Right [4]) "TBrownRand" [lo,hi,dev,dist,trig_] Nothing 1 (Special 0) (toUId z)
-
--- | triggered gaussian random distribution
---
---  TGaussRand [KR,AR] lo=0.0 hi=1.0 trig=0.0;    FILTER: TRUE, NONDET
-tGaussRand :: ID a => a -> UGen -> UGen -> UGen -> UGen
-tGaussRand z lo hi trig_ = mkUGen Nothing [KR,AR] (Right [2]) "TGaussRand" [lo,hi,trig_] Nothing 1 (Special 0) (toUId z)
-
--- | buffer granulator with linear att/dec
---
---  TGrains2 [AR] trigger=0.0 bufnum=0.0 rate=1.0 centerPos=0.0 dur=0.1 pan=0.0 amp=0.1 att=0.5 dec=0.5 interp=4.0;    NC INPUT: True
-tGrains2 :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-tGrains2 numChannels rate trigger bufnum rate_ centerPos dur pan amp att dec interp = mkUGen Nothing [AR] (Left rate) "TGrains2" [trigger,bufnum,rate_,centerPos,dur,pan,amp,att,dec,interp] Nothing numChannels (Special 0) NoId
-
--- | buffer granulator with user envelope
---
---  TGrains3 [AR] trigger=0.0 bufnum=0.0 rate=1.0 centerPos=0.0 dur=0.1 pan=0.0 amp=0.1 att=0.5 dec=0.5 window=1.0 interp=4.0;    NC INPUT: True
-tGrains3 :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-tGrains3 numChannels rate trigger bufnum rate_ centerPos dur pan amp att dec window interp = mkUGen Nothing [AR] (Left rate) "TGrains3" [trigger,bufnum,rate_,centerPos,dur,pan,amp,att,dec,window,interp] Nothing numChannels (Special 0) NoId
-
--- | Tracking Phase Vocoder
---
---  TPV [AR] chain=0.0 windowsize=1024.0 hopsize=512.0 maxpeaks=80.0 currentpeaks=0.0 freqmult=1.0 tolerance=4.0 noisefloor=0.2
-tpv :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-tpv chain windowsize hopsize maxpeaks currentpeaks freqmult tolerance noisefloor = mkUGen Nothing [AR] (Left AR) "TPV" [chain,windowsize,hopsize,maxpeaks,currentpeaks,freqmult,tolerance,noisefloor] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  TTendency [KR,AR] trigger=0.0 dist=0.0 parX=0.0 parY=1.0 parA=0.0 parB=0.0
-tTendency :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-tTendency rate trigger dist parX parY parA parB = mkUGen Nothing [KR,AR] (Left rate) "TTendency" [trigger,dist,parX,parY,parA,parB] Nothing 1 (Special 0) NoId
-
--- | pitch tracker
---
---  Tartini [KR] in=0.0 threshold=0.93 n=2048.0 k=0.0 overlap=1024.0 smallCutoff=0.5
-tartini :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-tartini rate in_ threshold n k overlap smallCutoff = mkUGen Nothing [KR] (Left rate) "Tartini" [in_,threshold,n,k,overlap,smallCutoff] Nothing 2 (Special 0) NoId
-
--- | Neural Oscillator
---
---  TermanWang [AR] input=0.0 reset=0.0 ratex=1.0e-2 ratey=1.0e-2 alpha=1.0 beta=1.0 eta=1.0 initx=0.0 inity=0.0
-termanWang :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-termanWang rate input reset ratex ratey alpha beta eta initx inity = mkUGen Nothing [AR] (Left rate) "TermanWang" [input,reset,ratex,ratey,alpha,beta,eta,initx,inity] Nothing 1 (Special 0) NoId
-
--- | display level of a UGen as a textual meter
---
---  TextVU [KR,AR] trig=2.0 in=0.0 label=0.0 width=21.0 reset=0.0 ana=0.0
-textVU :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-textVU rate trig_ in_ label_ width reset ana = mkUGen Nothing [KR,AR] (Left rate) "TextVU" [trig_,in_,label_,width,reset,ana] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Tilt [AR] w=0.0 x=0.0 y=0.0 z=0.0 tilt=0.0
-tilt :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-tilt rate w x y z tilt_ = mkUGen Nothing [AR] (Left rate) "Tilt" [w,x,y,z,tilt_] Nothing 1 (Special 0) NoId
-
--- | triggered signal averager
---
---  TrigAvg [KR] in=0.0 trig=0.0
-trigAvg :: Rate -> UGen -> UGen -> UGen
-trigAvg rate in_ trig_ = mkUGen Nothing [KR] (Left rate) "TrigAvg" [in_,trig_] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  Tumble [AR] w=0.0 x=0.0 y=0.0 z=0.0 tilt=0.0
-tumble :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-tumble rate w x y z tilt_ = mkUGen Nothing [AR] (Left rate) "Tumble" [w,x,y,z,tilt_] Nothing 1 (Special 0) NoId
-
--- | physical modeling simulation; two tubes
---
---  TwoTube [AR] input=0.0 k=1.0e-2 loss=1.0 d1length=100.0 d2length=100.0
-twoTube :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-twoTube rate input k loss d1length d2length = mkUGen Nothing [AR] (Left rate) "TwoTube" [input,k,loss,d1length,d2length] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  UHJ2B [AR] ls=0.0 rs=0.0
-uHJ2B :: Rate -> UGen -> UGen -> UGen
-uHJ2B rate ls rs = mkUGen Nothing [AR] (Left rate) "UHJ2B" [ls,rs] Nothing 3 (Special 0) NoId
-
--- | Vector Base Amplitude Panner
---
---  VBAP [KR,AR] in=0.0 bufnum=0.0 azimuth=0.0 elevation=1.0 spread=0.0;    NC INPUT: True
-vBAP :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-vBAP numChannels rate in_ bufnum azimuth elevation spread = mkUGen Nothing [KR,AR] (Left rate) "VBAP" [in_,bufnum,azimuth,elevation,spread] Nothing numChannels (Special 0) NoId
-
--- | 2D scanning pattern virtual machine
---
---  VMScan2D [AR] bufnum=0.0
-vMScan2D :: Rate -> UGen -> UGen
-vMScan2D rate bufnum = mkUGen Nothing [AR] (Left rate) "VMScan2D" [bufnum] Nothing 2 (Special 0) NoId
-
--- | vosim pulse generator
---
---  VOSIM [AR] trig=0.1 freq=400.0 nCycles=1.0 decay=0.9
-vosim :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-vosim rate trig_ freq nCycles decay_ = mkUGen Nothing [AR] (Left rate) "VOSIM" [trig_,freq,nCycles,decay_] Nothing 1 (Special 0) NoId
-
--- | windowed amplitude follower
---
---  WAmp [KR] in=0.0 winSize=0.1
-wAmp :: Rate -> UGen -> UGen -> UGen
-wAmp rate in_ winSize = mkUGen Nothing [KR] (Left rate) "WAmp" [in_,winSize] Nothing 1 (Special 0) NoId
-
--- | decomposition into square waves, and reconstruction
---
---  WalshHadamard [AR] input=0.0 which=0.0
-walshHadamard :: Rate -> UGen -> UGen -> UGen
-walshHadamard rate input which = mkUGen Nothing [AR] (Left rate) "WalshHadamard" [input,which] Nothing 1 (Special 0) NoId
-
--- | (Undocumented class)
---
---  WarpZ [AR] bufnum=0.0 pointer=0.0 freqScale=1.0 windowSize=0.2 envbufnum=-1.0 overlaps=8.0 windowRandRatio=0.0 interp=1.0 zeroSearch=0.0 zeroStart=0.0;    NC INPUT: True
-warpZ :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-warpZ numChannels rate bufnum pointer freqScale windowSize envbufnum overlaps windowRandRatio interp zeroSearch zeroStart = mkUGen Nothing [AR] (Left rate) "WarpZ" [bufnum,pointer,freqScale,windowSize,envbufnum,overlaps,windowRandRatio,interp,zeroSearch,zeroStart] Nothing numChannels (Special 0) NoId
-
--- | Lose bits of your waves
---
---  WaveLoss [KR,AR] in=0.0 drop=20.0 outof=40.0 mode=1.0
-waveLoss :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
-waveLoss rate in_ drop_ outof mode = mkUGen Nothing [KR,AR] (Left rate) "WaveLoss" [in_,drop_,outof,mode] Nothing 1 (Special 0) NoId
-
--- | wave terrain synthesis
---
---  WaveTerrain [AR] bufnum=0.0 x=0.0 y=0.0 xsize=100.0 ysize=100.0
-waveTerrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-waveTerrain rate bufnum x y xsize ysize = mkUGen Nothing [AR] (Left rate) "WaveTerrain" [bufnum,x,y,xsize,ysize] Nothing 1 (Special 0) NoId
-
--- | decomposition into Daub4 wavelets, and reconstruction
---
---  WaveletDaub [AR] input=0.0 n=64.0 which=0.0
-waveletDaub :: Rate -> UGen -> UGen -> UGen -> UGen
-waveletDaub rate input n which = mkUGen Nothing [AR] (Left rate) "WaveletDaub" [input,n,which] Nothing 1 (Special 0) NoId
-
--- | Weakly Nonlinear Oscillator
---
---  WeaklyNonlinear [AR] input=0.0 reset=0.0 ratex=1.0 ratey=1.0 freq=440.0 initx=0.0 inity=0.0 alpha=0.0 xexponent=0.0 beta=0.0 yexponent=0.0
-weaklyNonlinear :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-weaklyNonlinear rate input reset ratex ratey freq initx inity alpha xexponent beta yexponent = mkUGen Nothing [AR] (Left rate) "WeaklyNonlinear" [input,reset,ratex,ratey,freq,initx,inity,alpha,xexponent,beta,yexponent] Nothing 1 (Special 0) NoId
-
--- | Weakly Nonlinear Oscillator
---
---  WeaklyNonlinear2 [AR] input=0.0 reset=0.0 ratex=1.0 ratey=1.0 freq=440.0 initx=0.0 inity=0.0 alpha=0.0 xexponent=0.0 beta=0.0 yexponent=0.0
-weaklyNonlinear2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-weaklyNonlinear2 rate input reset ratex ratey freq initx inity alpha xexponent beta yexponent = mkUGen Nothing [AR] (Left rate) "WeaklyNonlinear2" [input,reset,ratex,ratey,freq,initx,inity,alpha,xexponent,beta,yexponent] Nothing 1 (Special 0) NoId
-
--- | Pulse counter with floating point steps
---
---  WrapSummer [KR,AR] trig=0.0 step=1.0 min=0.0 max=1.0 reset=0.0 resetval=0.0
-wrapSummer :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
-wrapSummer rate trig_ step min_ max_ reset resetval = mkUGen Nothing [KR,AR] (Left rate) "WrapSummer" [trig_,step,min_,max_,reset,resetval] Nothing 1 (Special 0) NoId
+-- | SC3 External UGen bindings (auto-generated).
+module Sound.SC3.UGen.Bindings.DB.External where
+
+--import Sound.SC3.Common.Enum
+--import Sound.SC3.Common.Envelope
+import Sound.SC3.Common.Rate
+import Sound.SC3.Common.UId
+import Sound.SC3.UGen.Type
+import Sound.SC3.UGen.UGen
+
+-- | (Undocumented class)
+--
+--  A2B [AR] a=0.0 b=0.0 c=0.0 d=0.0
+a2b :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+a2b rate a b c d = mkUGen Nothing [AR] (Left rate) "A2B" [a,b,c,d] Nothing 4 (Special 0) NoId
+
+-- | Emulator of the AY (aka YM) soundchip, used in Spectrum/Atari
+--
+--  AY [AR] tonea=1777.0 toneb=1666.0 tonec=1555.0 noise=1.0 control=7.0 vola=15.0 volb=15.0 volc=15.0 envfreq=4.0 envstyle=1.0 chiptype=0.0
+ay :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+ay rate tonea toneb tonec noise control_ vola volb volc envfreq envstyle chiptype = mkUGen Nothing [AR] (Left rate) "AY" [tonea,toneb,tonec,noise,control_,vola,volb,volc,envfreq,envstyle,chiptype] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  Allpass1 [AR] in=0.0 freq=1200.0
+allpass1 :: Rate -> UGen -> UGen -> UGen
+allpass1 rate in_ freq = mkUGen Nothing [AR] (Left rate) "Allpass1" [in_,freq] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  Allpass2 [AR] in=0.0 freq=1200.0 rq=1.0
+allpass2 :: Rate -> UGen -> UGen -> UGen -> UGen
+allpass2 rate in_ freq rq = mkUGen Nothing [AR] (Left rate) "Allpass2" [in_,freq,rq] Nothing 1 (Special 0) NoId
+
+-- | amplitude follower (deprecated)
+--
+--  AmplitudeMod [KR,AR] in=0.0 attackTime=1.0e-2 releaseTime=1.0e-2
+amplitudeMod :: Rate -> UGen -> UGen -> UGen -> UGen
+amplitudeMod rate in_ attackTime releaseTime = mkUGen Nothing [KR,AR] (Left rate) "AmplitudeMod" [in_,attackTime,releaseTime] Nothing 1 (Special 0) NoId
+
+-- | Virtual analog 808 bass drum model
+--
+--  AnalogBassDrum [AR] trig=0.0 infsustain=0.0 accent=0.5 freq=50.0 tone=0.5 decay=0.5 attackfm=0.5 selffm=0.25
+analogBassDrum :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+analogBassDrum rate trig_ infsustain accent freq tone decay_ attackfm selffm = mkUGen Nothing [AR] (Left rate) "AnalogBassDrum" [trig_,infsustain,accent,freq,tone,decay_,attackfm,selffm] Nothing 1 (Special 0) NoId
+
+-- | A virtual-analog feedback phaser
+--
+--  AnalogPhaser [AR] input=0.0 lfoinput=0.0 skew=0.0 feedback=0.25 modulation=0.5 stages=8.0
+analogPhaser :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+analogPhaser input lfoinput skew feedback modulation stages = mkUGen Nothing [AR] (Right [0]) "AnalogPhaser" [input,lfoinput,skew,feedback,modulation,stages] Nothing 1 (Special 0) NoId
+
+-- | Virtual Analog allpass phaser modulation section
+--
+--  AnalogPhaserMod [KR,AR] input=0.0 skew=0.0 modulation=0.5 stages=8.0;    FILTER: TRUE
+analogPhaserMod :: UGen -> UGen -> UGen -> UGen -> UGen
+analogPhaserMod input skew modulation stages = mkUGen Nothing [KR,AR] (Right [0]) "AnalogPhaserMod" [input,skew,modulation,stages] Nothing 1 (Special 0) NoId
+
+-- | Virtual analog 808 snare drum model.
+--
+--  AnalogSnareDrum [AR] trig=0.0 infsustain=0.0 accent=0.1 freq=200.0 tone=0.5 decay=0.5 snappy=0.5
+analogSnareDrum :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+analogSnareDrum rate trig_ infsustain accent freq tone decay_ snappy = mkUGen Nothing [AR] (Left rate) "AnalogSnareDrum" [trig_,infsustain,accent,freq,tone,decay_,snappy] Nothing 1 (Special 0) NoId
+
+-- | Analog tape emulation
+--
+--  AnalogTape [AR] input=0.0 bias=0.5 saturation=0.5 drive=0.5 oversample=1.0 mode=0.0;    FILTER: TRUE
+analogTape :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+analogTape input bias saturation drive oversample mode = mkUGen Nothing [AR] (Right [0]) "AnalogTape" [input,bias,saturation,drive,oversample,mode] Nothing 1 (Special 0) NoId
+
+-- | A virtual analog vintage EQ and distortion
+--
+--  AnalogVintageDistortion [AR] input=0.0 drivegain=0.5 bias=0.0 lowgain=0.1 highgain=0.1 shelvingfreq=600.0 oversample=0.0;    FILTER: TRUE
+analogVintageDistortion :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+analogVintageDistortion input drivegain bias lowgain highgain shelvingfreq oversample = mkUGen Nothing [AR] (Right [0]) "AnalogVintageDistortion" [input,drivegain,bias,lowgain,highgain,shelvingfreq,oversample] Nothing 1 (Special 0) NoId
+
+-- | event analyser (BBCut)
+--
+--  AnalyseEvents2 [AR] in=0.0 bufnum=0.0 threshold=0.34 triggerid=101.0 circular=0.0 pitch=0.0
+analyseEvents2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+analyseEvents2 rate in_ bufnum threshold triggerid circular pitch_ = mkUGen Nothing [AR] (Left rate) "AnalyseEvents2" [in_,bufnum,threshold,triggerid,circular,pitch_] Nothing 1 (Special 0) NoId
+
+-- | 2-species Predator-Prey model
+--
+--  ArneodoCoulletTresser [AR] freq=22050.0 alpha=1.5 h=5.0e-2 xi=0.5 yi=0.5 zi=0.5
+arneodoCoulletTresser :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+arneodoCoulletTresser rate freq alpha h xi yi zi = mkUGen Nothing [AR] (Left rate) "ArneodoCoulletTresser" [freq,alpha,h,xi,yi,zi] Nothing 3 (Special 0) NoId
+
+-- | detect the largest value (and its position) in an array of UGens
+--
+--  ArrayMax [KR,AR] *array=0.0;    MCE=1, FILTER: TRUE
+arrayMax :: UGen -> UGen
+arrayMax array = mkUGen Nothing [KR,AR] (Right [0]) "ArrayMax" [] (Just [array]) 2 (Special 0) NoId
+
+-- | detect the smallest value (and its position) in an array of UGens
+--
+--  ArrayMin [KR,AR] *array=0.0;    MCE=1, FILTER: TRUE
+arrayMin :: UGen -> UGen
+arrayMin array = mkUGen Nothing [KR,AR] (Right [0]) "ArrayMin" [] (Just [array]) 2 (Special 0) NoId
+
+-- | Use Amp data from a given partial
+--
+--  AtsAmp [KR,AR] atsbuffer=0.0 partialNum=0.0 filePointer=0.0
+atsAmp :: Rate -> UGen -> UGen -> UGen -> UGen
+atsAmp rate atsbuffer partialNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsAmp" [atsbuffer,partialNum,filePointer] Nothing 1 (Special 0) NoId
+
+-- | (put short description here)
+--
+--  AtsBand [AR] atsbuffer=0.0 band=0.0 filePointer=0.0
+atsBand :: Rate -> UGen -> UGen -> UGen -> UGen
+atsBand rate atsbuffer band filePointer = mkUGen Nothing [AR] (Left rate) "AtsBand" [atsbuffer,band,filePointer] Nothing 1 (Special 0) NoId
+
+-- | Use Freq data from a given partial
+--
+--  AtsFreq [KR,AR] atsbuffer=0.0 partialNum=0.0 filePointer=0.0
+atsFreq :: Rate -> UGen -> UGen -> UGen -> UGen
+atsFreq rate atsbuffer partialNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsFreq" [atsbuffer,partialNum,filePointer] Nothing 1 (Special 0) NoId
+
+-- | Resynthesize sine and noise data from an ATS analysis file
+--
+--  AtsNoiSynth [AR] atsbuffer=0.0 numPartials=0.0 partialStart=0.0 partialSkip=1.0 filePointer=0.0 sinePct=1.0 noisePct=1.0 freqMul=1.0 freqAdd=0.0 numBands=25.0 bandStart=0.0 bandSkip=1.0
+atsNoiSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+atsNoiSynth rate atsbuffer numPartials partialStart partialSkip filePointer sinePct noisePct freqMul freqAdd numBands bandStart bandSkip = mkUGen Nothing [AR] (Left rate) "AtsNoiSynth" [atsbuffer,numPartials,partialStart,partialSkip,filePointer,sinePct,noisePct,freqMul,freqAdd,numBands,bandStart,bandSkip] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  AtsNoise [KR,AR] atsbuffer=0.0 bandNum=0.0 filePointer=0.0
+atsNoise :: Rate -> UGen -> UGen -> UGen -> UGen
+atsNoise rate atsbuffer bandNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsNoise" [atsbuffer,bandNum,filePointer] Nothing 1 (Special 0) NoId
+
+-- | One UGen to return both Amp and Freq info
+--
+--  AtsParInfo [KR,AR] atsbuffer=0.0 partialNum=0.0 filePointer=0.0
+atsParInfo :: Rate -> UGen -> UGen -> UGen -> UGen
+atsParInfo rate atsbuffer partialNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "AtsParInfo" [atsbuffer,partialNum,filePointer] Nothing 2 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  AtsPartial [AR] atsbuffer=0.0 partial=0.0 filePointer=0.0 freqMul=1.0 freqAdd=0.0
+atsPartial :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+atsPartial rate atsbuffer partial filePointer freqMul freqAdd = mkUGen Nothing [AR] (Left rate) "AtsPartial" [atsbuffer,partial,filePointer,freqMul,freqAdd] Nothing 1 (Special 0) NoId
+
+-- | Resynthesize sine data from an ATS analysis file
+--
+--  AtsSynth [AR] atsbuffer=0.0 numPartials=0.0 partialStart=0.0 partialSkip=1.0 filePointer=0.0 freqMul=1.0 freqAdd=0.0
+atsSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+atsSynth rate atsbuffer numPartials partialStart partialSkip filePointer freqMul freqAdd = mkUGen Nothing [AR] (Left rate) "AtsSynth" [atsbuffer,numPartials,partialStart,partialSkip,filePointer,freqMul,freqAdd] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  AtsUGen [] maxSize=0.0
+atsUGen :: Rate -> UGen -> UGen
+atsUGen rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "AtsUGen" [maxSize] Nothing 1 (Special 0) NoId
+
+-- | Detect onsets and assess the nature of the attack slope
+--
+--  AttackSlope [KR] input=0.0 windowsize=1024.0 peakpicksize=20.0 leak=0.999 energythreshold=1.0e-2 sumthreshold=20.0 mingap=30.0 numslopesaveraged=10.0
+attackSlope :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+attackSlope rate input windowsize peakpicksize leak energythreshold sumthreshold mingap numslopesaveraged = mkUGen Nothing [KR] (Left rate) "AttackSlope" [input,windowsize,peakpicksize,leak,energythreshold,sumthreshold,mingap,numslopesaveraged] Nothing 6 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  AudioMSG [AR] in=0.0 index=0.0;    FILTER: TRUE
+audioMSG :: UGen -> UGen -> UGen
+audioMSG in_ index_ = mkUGen Nothing [AR] (Right [0]) "AudioMSG" [in_,index_] Nothing 1 (Special 0) NoId
+
+-- | calculates mean average of audio or control rate signal
+--
+--  AverageOutput [KR,AR] in=0.0 trig=0.0;    FILTER: TRUE
+averageOutput :: UGen -> UGen -> UGen
+averageOutput in_ trig_ = mkUGen Nothing [KR,AR] (Right [0]) "AverageOutput" [in_,trig_] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  B2A [AR] w=0.0 x=0.0 y=0.0 z=0.0
+b2a :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+b2a rate w x y z = mkUGen Nothing [AR] (Left rate) "B2A" [w,x,y,z] Nothing 4 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  B2Ster [AR] w=0.0 x=0.0 y=0.0
+b2Ster :: Rate -> UGen -> UGen -> UGen -> UGen
+b2Ster rate w x y = mkUGen Nothing [AR] (Left rate) "B2Ster" [w,x,y] Nothing 2 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  B2UHJ [AR] w=0.0 x=0.0 y=0.0
+b2uhj :: Rate -> UGen -> UGen -> UGen -> UGen
+b2uhj rate w x y = mkUGen Nothing [AR] (Left rate) "B2UHJ" [w,x,y] Nothing 2 (Special 0) NoId
+
+-- | MultiOut BetaBlocker VChip
+--
+--  BBlockerBuf [AR] freq=0.0 bufnum=0.0 startpoint=0.0
+bBlockerBuf :: Rate -> UGen -> UGen -> UGen -> UGen
+bBlockerBuf rate freq bufnum startpoint = mkUGen Nothing [AR] (Left rate) "BBlockerBuf" [freq,bufnum,startpoint] Nothing 9 (Special 0) NoId
+
+-- | 3D Ambisonic decoder
+--
+--  BFDecode1 [AR] w=0.0 x=0.0 y=0.0 z=0.0 azimuth=0.0 elevation=0.0 wComp=0.0
+bfDecode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+bfDecode1 rate w x y z azimuth elevation wComp = mkUGen Nothing [AR] (Left rate) "BFDecode1" [w,x,y,z,azimuth,elevation,wComp] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  BFDecoder [] maxSize=0.0
+bfDecoder :: Rate -> UGen -> UGen
+bfDecoder rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "BFDecoder" [maxSize] Nothing 1 (Special 0) NoId
+
+-- | Ambisonic B format encoder
+--
+--  BFEncode1 [AR] in=0.0 azimuth=0.0 elevation=0.0 rho=1.0 gain=1.0 wComp=0.0
+bfEncode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+bfEncode1 rate in_ azimuth elevation rho gain wComp = mkUGen Nothing [AR] (Left rate) "BFEncode1" [in_,azimuth,elevation,rho,gain,wComp] Nothing 4 (Special 0) NoId
+
+-- | Ambisonic B format encoder
+--
+--  BFEncode2 [AR] in=0.0 point_x=1.0 point_y=1.0 elevation=0.0 gain=1.0 wComp=0.0
+bfEncode2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+bfEncode2 rate in_ point_x point_y elevation gain wComp = mkUGen Nothing [AR] (Left rate) "BFEncode2" [in_,point_x,point_y,elevation,gain,wComp] Nothing 4 (Special 0) NoId
+
+-- | Ambisonic B format encoder for stereo signals
+--
+--  BFEncodeSter [AR] l=0.0 r=0.0 azimuth=0.0 width=1.5707963267949 elevation=0.0 rho=1.0 gain=1.0 wComp=0.0
+bfEncodeSter :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+bfEncodeSter rate l r azimuth width elevation rho gain wComp = mkUGen Nothing [AR] (Left rate) "BFEncodeSter" [l,r,azimuth,width,elevation,rho,gain,wComp] Nothing 4 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  BFGrainPanner [] maxSize=0.0
+bfGrainPanner :: Rate -> UGen -> UGen
+bfGrainPanner rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "BFGrainPanner" [maxSize] Nothing 1 (Special 0) NoId
+
+-- | BFormat sound manipulation
+--
+--  BFManipulate [AR] w=0.0 x=0.0 y=0.0 z=0.0 rotate=0.0 tilt=0.0 tumble=0.0
+bfManipulate :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+bfManipulate rate w x y z rotate_ tilt_ tumble_ = mkUGen Nothing [AR] (Left rate) "BFManipulate" [w,x,y,z,rotate_,tilt_,tumble_] Nothing 4 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  BFPanner [] maxSize=0.0
+bfPanner :: Rate -> UGen -> UGen
+bfPanner rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "BFPanner" [maxSize] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  BLBufRd [KR,AR] bufnum=0.0 phase=0.0 ratio=1.0
+blBufRd :: Rate -> UGen -> UGen -> UGen -> UGen
+blBufRd rate bufnum phase ratio = mkUGen Nothing [KR,AR] (Left rate) "BLBufRd" [bufnum,phase,ratio] Nothing 1 (Special 0) NoId
+
+-- | Band limited oscillator
+--
+--  BLOsc [KR,AR] freq=100.0 pulsewidth=0.5 waveform=0.0
+blOsc :: Rate -> UGen -> UGen -> UGen -> UGen
+blOsc rate freq pulsewidth waveform = mkUGen Nothing [KR,AR] (Left rate) "BLOsc" [freq,pulsewidth,waveform] Nothing 1 (Special 0) NoId
+
+-- | 24db/oct rolloff - 4nd order resonant Low/High/Band Pass Filter
+--
+--  BMoog [AR] in=0.0 freq=440.0 q=0.2 mode=0.0 saturation=0.95;    FILTER: TRUE
+bMoog :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+bMoog in_ freq q mode saturation = mkUGen Nothing [AR] (Right [0]) "BMoog" [in_,freq,q,mode,saturation] Nothing 1 (Special 0) NoId
+
+-- | Balances two signals with each other
+--
+--  Balance [AR] in=0.0 test=0.0 hp=10.0 stor=0.0
+balance :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+balance rate in_ test hp stor = mkUGen Nothing [AR] (Left rate) "Balance" [in_,test,hp,stor] Nothing 1 (Special 0) NoId
+
+-- | Extracts statistics on a beat histogram
+--
+--  BeatStatistics [KR] fft=0.0 leak=0.995 numpreviousbeats=4.0
+beatStatistics :: Rate -> UGen -> UGen -> UGen -> UGen
+beatStatistics rate fft_ leak numpreviousbeats = mkUGen Nothing [KR] (Left rate) "BeatStatistics" [fft_,leak,numpreviousbeats] Nothing 4 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  BinData [KR,AR] buffer=0.0 bin=0.0 overlaps=0.5
+binData :: Rate -> UGen -> UGen -> UGen -> UGen
+binData rate buffer bin overlaps = mkUGen Nothing [KR,AR] (Left rate) "BinData" [buffer,bin,overlaps] Nothing 2 (Special 0) NoId
+
+-- | Band limited impulse generation
+--
+--  BlitB3 [AR] freq=440.0
+blitB3 :: Rate -> UGen -> UGen
+blitB3 rate freq = mkUGen Nothing [AR] (Left rate) "BlitB3" [freq] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  BlitB3D [AR] freq=440.0
+blitB3D :: Rate -> UGen -> UGen
+blitB3D rate freq = mkUGen Nothing [AR] (Left rate) "BlitB3D" [freq] Nothing 1 (Special 0) NoId
+
+-- | BLIT derived sawtooth
+--
+--  BlitB3Saw [AR] freq=440.0 leak=0.99
+blitB3Saw :: Rate -> UGen -> UGen -> UGen
+blitB3Saw rate freq leak = mkUGen Nothing [AR] (Left rate) "BlitB3Saw" [freq,leak] Nothing 1 (Special 0) NoId
+
+-- | Bipolar BLIT derived square waveform
+--
+--  BlitB3Square [AR] freq=440.0 leak=0.99
+blitB3Square :: Rate -> UGen -> UGen -> UGen
+blitB3Square rate freq leak = mkUGen Nothing [AR] (Left rate) "BlitB3Square" [freq,leak] Nothing 1 (Special 0) NoId
+
+-- | Bipolar BLIT derived triangle
+--
+--  BlitB3Tri [AR] freq=440.0 leak=0.99 leak2=0.99
+blitB3Tri :: Rate -> UGen -> UGen -> UGen -> UGen
+blitB3Tri rate freq leak leak2 = mkUGen Nothing [AR] (Left rate) "BlitB3Tri" [freq,leak,leak2] Nothing 1 (Special 0) NoId
+
+-- | breakcore simulator
+--
+--  Breakcore [AR] bufnum=0.0 capturein=0.0 capturetrigger=0.0 duration=0.1 ampdropout=0.0
+breakcore :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+breakcore rate bufnum capturein capturetrigger duration ampdropout = mkUGen Nothing [AR] (Left rate) "Breakcore" [bufnum,capturein,capturetrigger,duration,ampdropout] Nothing 1 (Special 0) NoId
+
+-- | Prigogine oscillator
+--
+--  Brusselator [AR] reset=0.0 rate=1.0e-2 mu=1.0 gamma=1.0 initx=0.5 inity=0.5
+brusselator :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+brusselator rate reset rate_ mu gamma initx inity = mkUGen Nothing [AR] (Left rate) "Brusselator" [reset,rate_,mu,gamma,initx,inity] Nothing 2 (Special 0) NoId
+
+-- | Granular synthesis with sound sampled in a buffer
+--
+--  BufGrain [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 interp=2.0
+bufGrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+bufGrain rate trigger dur sndbuf rate_ pos interp = mkUGen Nothing [AR] (Left rate) "BufGrain" [trigger,dur,sndbuf,rate_,pos,interp] Nothing 1 (Special 0) NoId
+
+-- | Granular synthesis with sound sampled in a buffer and user supplied envelope
+--
+--  BufGrainB [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf=0.0 interp=2.0
+bufGrainB :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+bufGrainB rate trigger dur sndbuf rate_ pos envbuf interp = mkUGen Nothing [AR] (Left rate) "BufGrainB" [trigger,dur,sndbuf,rate_,pos,envbuf,interp] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  BufGrainBBF [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 interp=2.0 wComp=0.0
+bufGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+bufGrainBBF rate trigger dur sndbuf rate_ pos envbuf azimuth elevation rho interp wComp = mkUGen Nothing [AR] (Left rate) "BufGrainBBF" [trigger,dur,sndbuf,rate_,pos,envbuf,azimuth,elevation,rho,interp,wComp] Nothing 4 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  BufGrainBF [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 azimuth=0.0 elevation=0.0 rho=1.0 interp=2.0 wComp=0.0
+bufGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+bufGrainBF rate trigger dur sndbuf rate_ pos azimuth elevation rho interp wComp = mkUGen Nothing [AR] (Left rate) "BufGrainBF" [trigger,dur,sndbuf,rate_,pos,azimuth,elevation,rho,interp,wComp] Nothing 4 (Special 0) NoId
+
+-- | Granular synthesis with sound sampled in a buffer and user supplied envelopes
+--
+--  BufGrainI [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 interp=2.0
+bufGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+bufGrainI rate trigger dur sndbuf rate_ pos envbuf1 envbuf2 ifac interp = mkUGen Nothing [AR] (Left rate) "BufGrainI" [trigger,dur,sndbuf,rate_,pos,envbuf1,envbuf2,ifac,interp] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  BufGrainIBF [AR] trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 interp=2.0 wComp=0.0
+bufGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+bufGrainIBF rate trigger dur sndbuf rate_ pos envbuf1 envbuf2 ifac azimuth elevation rho interp wComp = mkUGen Nothing [AR] (Left rate) "BufGrainIBF" [trigger,dur,sndbuf,rate_,pos,envbuf1,envbuf2,ifac,azimuth,elevation,rho,interp,wComp] Nothing 4 (Special 0) NoId
+
+-- | detect the largest value (and its position) in an array of UGens
+--
+--  BufMax [KR] bufnum=0.0 gate=1.0
+bufMax :: Rate -> UGen -> UGen -> UGen
+bufMax rate bufnum gate_ = mkUGen Nothing [KR] (Left rate) "BufMax" [bufnum,gate_] Nothing 2 (Special 0) NoId
+
+-- | detect the largest value (and its position) in an array of UGens
+--
+--  BufMin [KR] bufnum=0.0 gate=1.0
+bufMin :: Rate -> UGen -> UGen -> UGen
+bufMin rate bufnum gate_ = mkUGen Nothing [KR] (Left rate) "BufMin" [bufnum,gate_] Nothing 2 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  CQ_Diff [KR] in1=0.0 in2=0.0 databufnum=0.0
+cq_Diff :: Rate -> UGen -> UGen -> UGen -> UGen
+cq_Diff rate in1 in2 databufnum = mkUGen Nothing [KR] (Left rate) "CQ_Diff" [in1,in2,databufnum] Nothing 1 (Special 0) NoId
+
+-- | Quefrency analysis and liftering
+--
+--  Cepstrum [] cepbuf=0.0 fftchain=0.0
+cepstrum :: Rate -> UGen -> UGen -> UGen
+cepstrum rate cepbuf fftchain = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Cepstrum" [cepbuf,fftchain] Nothing 1 (Special 0) NoId
+
+-- | Chen's chaotic double scroll attractor
+--
+--  Chen [KR,AR] speed=0.5 a=0.5 b=0.3 c=0.28
+chen :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+chen rate speed a b c = mkUGen Nothing [KR,AR] (Left rate) "Chen" [speed,a,b,c] Nothing 3 (Special 0) NoId
+
+-- | Octave chroma band based representation of energy in a signal; Chromagram for nTET tuning systems with any base reference
+--
+--  Chromagram [KR] fft=0.0 fftsize=2048.0 n=12.0 tuningbase=32.703195662575 octaves=8.0 integrationflag=0.0 coeff=0.9 octaveratio=2.0 perframenormalize=0.0
+chromagram :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+chromagram rate fft_ fftsize n tuningbase octaves integrationflag coeff octaveratio perframenormalize = mkUGen Nothing [KR] (Left rate) "Chromagram" [fft_,fftsize,n,tuningbase,octaves,integrationflag,coeff,octaveratio,perframenormalize] Nothing 12 (Special 0) NoId
+
+-- | circular linear lag
+--
+--  CircleRamp [KR,AR] in=0.0 lagTime=0.1 circmin=-180.0 circmax=180.0
+circleRamp :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+circleRamp rate in_ lagTime circmin circmax = mkUGen Nothing [KR,AR] (Left rate) "CircleRamp" [in_,lagTime,circmin,circmax] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  Clipper32 [AR] in=0.0 lo=-0.8 hi=0.8
+clipper32 :: Rate -> UGen -> UGen -> UGen -> UGen
+clipper32 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "Clipper32" [in_,lo,hi] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  Clipper4 [AR] in=0.0 lo=-0.8 hi=0.8
+clipper4 :: Rate -> UGen -> UGen -> UGen -> UGen
+clipper4 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "Clipper4" [in_,lo,hi] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  Clipper8 [AR] in=0.0 lo=-0.8 hi=0.8
+clipper8 :: Rate -> UGen -> UGen -> UGen -> UGen
+clipper8 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "Clipper8" [in_,lo,hi] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  Clockmus [KR]
+clockmus :: Rate -> UGen
+clockmus rate = mkUGen Nothing [KR] (Left rate) "Clockmus" [] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  CombLP [AR] in=0.0 gate=1.0 maxdelaytime=0.2 delaytime=0.2 decaytime=1.0 coef=0.5
+combLP :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+combLP rate in_ gate_ maxdelaytime delaytime decaytime coef = mkUGen Nothing [AR] (Left rate) "CombLP" [in_,gate_,maxdelaytime,delaytime,decaytime,coef] Nothing 1 (Special 0) NoId
+
+-- | FM-modulable resonating filter
+--
+--  ComplexRes [AR] in=0.0 freq=100.0 decay=0.2;    FILTER: TRUE
+complexRes :: UGen -> UGen -> UGen -> UGen
+complexRes in_ freq decay_ = mkUGen Nothing [AR] (Right [0]) "ComplexRes" [in_,freq,decay_] Nothing 1 (Special 0) NoId
+
+-- | Concatenative Cross-Synthesis on Live Streams
+--
+--  Concat [AR] control=0.0 source=0.0 storesize=1.0 seektime=1.0 seekdur=1.0 matchlength=5.0e-2 freezestore=0.0 zcr=1.0 lms=1.0 sc=1.0 st=0.0 randscore=0.0
+concat :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+concat rate control_ source storesize seektime seekdur matchlength freezestore zcr lms sc st randscore = mkUGen Nothing [AR] (Left rate) "Concat" [control_,source,storesize,seektime,seekdur,matchlength,freezestore,zcr,lms,sc,st,randscore] Nothing 1 (Special 0) NoId
+
+-- | Concatenative Cross-Synthesis on Live Streams
+--
+--  Concat2 [AR] control=0.0 source=0.0 storesize=1.0 seektime=1.0 seekdur=1.0 matchlength=5.0e-2 freezestore=0.0 zcr=1.0 lms=1.0 sc=1.0 st=0.0 randscore=0.0 threshold=1.0e-2
+concat2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+concat2 rate control_ source storesize seektime seekdur matchlength freezestore zcr lms sc st randscore threshold = mkUGen Nothing [AR] (Left rate) "Concat2" [control_,source,storesize,seektime,seekdur,matchlength,freezestore,zcr,lms,sc,st,randscore,threshold] Nothing 1 (Special 0) NoId
+
+-- | an amplitude tracking based onset detector
+--
+--  Coyote [KR] in=0.0 trackFall=0.2 slowLag=0.2 fastLag=1.0e-2 fastMul=0.5 thresh=5.0e-2 minDur=0.1
+coyote :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+coyote rate in_ trackFall slowLag fastLag fastMul thresh minDur = mkUGen Nothing [KR] (Left rate) "Coyote" [in_,trackFall,slowLag,fastLag,fastMul,thresh,minDur] Nothing 1 (Special 0) NoId
+
+-- | Measure the temporal crest factor of a signal
+--
+--  Crest [KR] in=0.0 numsamps=400.0 gate=1.0
+crest :: Rate -> UGen -> UGen -> UGen -> UGen
+crest rate in_ numsamps gate_ = mkUGen Nothing [KR] (Left rate) "Crest" [in_,numsamps,gate_] Nothing 1 (Special 0) NoId
+
+-- | class B/AB power amp distortion simulation
+--
+--  CrossoverDistortion [AR] in=0.0 amp=0.5 smooth=0.5;    FILTER: TRUE
+crossoverDistortion :: UGen -> UGen -> UGen -> UGen
+crossoverDistortion in_ amp smooth = mkUGen Nothing [AR] (Right [0]) "CrossoverDistortion" [in_,amp,smooth] Nothing 1 (Special 0) NoId
+
+-- | Simple compressor
+--
+--  DCompressor [AR] input=0.0 sidechainIn=0.0 sidechain=0.0 ratio=4.0 threshold=-40.0 attack=0.1 release=100.1 makeup=0.5 automakeup=1.0;    FILTER: TRUE
+dCompressor :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dCompressor input sidechainIn sidechain ratio threshold attack release makeup automakeup = mkUGen Nothing [AR] (Right [0]) "DCompressor" [input,sidechainIn,sidechain,ratio,threshold,attack,release,makeup,automakeup] Nothing 1 (Special 0) NoId
+
+-- | Digitally modelled analog filter
+--
+--  DFM1 [AR] in=0.0 freq=1000.0 res=0.1 inputgain=1.0 type=0.0 noiselevel=3.0e-4;    FILTER: TRUE
+dfm1 :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dfm1 in_ freq res inputgain type_ noiselevel = mkUGen Nothing [AR] (Right [0]) "DFM1" [in_,freq,res,inputgain,type_,noiselevel] Nothing 1 (Special 0) NoId
+
+-- | Demand rate implementation of a Wiard noise ring
+--
+--  DNoiseRing [DR] change=0.5 chance=0.5 shift=1.0 numBits=8.0 resetval=0.0;    DEMAND/NONDET
+dNoiseRing :: ID a => a -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dNoiseRing z change chance shift numBits resetval = mkUGen Nothing [DR] (Left DR) "DNoiseRing" [change,chance,shift,numBits,resetval] Nothing 1 (Special 0) (toUId z)
+
+-- | Triangle via 3rd order differerentiated polynomial waveform
+--
+--  DPW3Tri [AR] freq=440.0
+dpw3Tri :: Rate -> UGen -> UGen
+dpw3Tri rate freq = mkUGen Nothing [AR] (Left rate) "DPW3Tri" [freq] Nothing 1 (Special 0) NoId
+
+-- | Sawtooth via 4th order differerentiated polynomial waveform
+--
+--  DPW4Saw [AR] freq=440.0
+dpw4Saw :: Rate -> UGen -> UGen
+dpw4Saw rate freq = mkUGen Nothing [AR] (Left rate) "DPW4Saw" [freq] Nothing 1 (Special 0) NoId
+
+-- | Plucked physical model.
+--
+--  DWGBowed [AR] freq=440.0 velb=0.5 force=1.0 gate=1.0 pos=0.14 release=0.1 c1=1.0 c3=3.0 impZ=0.55 fB=2.0
+dwgBowed :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dwgBowed rate freq velb force gate_ pos release c1 c3 impZ fB = mkUGen Nothing [AR] (Left rate) "DWGBowed" [freq,velb,force,gate_,pos,release,c1,c3,impZ,fB] Nothing 1 (Special 0) NoId
+
+-- | Plucked physical model.
+--
+--  DWGBowedSimple [AR] freq=440.0 velb=0.5 force=1.0 gate=1.0 pos=0.14 release=0.1 c1=1.0 c3=30.0
+dwgBowedSimple :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dwgBowedSimple rate freq velb force gate_ pos release c1 c3 = mkUGen Nothing [AR] (Left rate) "DWGBowedSimple" [freq,velb,force,gate_,pos,release,c1,c3] Nothing 1 (Special 0) NoId
+
+-- | Plucked physical model.
+--
+--  DWGBowedTor [AR] freq=440.0 velb=0.5 force=1.0 gate=1.0 pos=0.14 release=0.1 c1=1.0 c3=3.0 impZ=0.55 fB=2.0 mistune=5.2 c1tor=1.0 c3tor=3000.0 iZtor=1.8
+dwgBowedTor :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dwgBowedTor rate freq velb force gate_ pos release c1 c3 impZ fB mistune c1tor c3tor iZtor = mkUGen Nothing [AR] (Left rate) "DWGBowedTor" [freq,velb,force,gate_,pos,release,c1,c3,impZ,fB,mistune,c1tor,c3tor,iZtor] Nothing 1 (Special 0) NoId
+
+-- | Clarinet physical model.
+--
+--  DWGClarinet3 [AR] freq=440.0 pm=1.0 pc=1.0 m=0.8 gate=1.0 release=1.0e-2 c1=0.25 c3=7.0
+dwgClarinet3 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dwgClarinet3 rate freq pm pc m gate_ release c1 c3 = mkUGen Nothing [AR] (Left rate) "DWGClarinet3" [freq,pm,pc,m,gate_,release,c1,c3] Nothing 1 (Special 0) NoId
+
+-- | Reimplementation of STK flute model.
+--
+--  DWGFlute [AR] freq=400.0 pm=1.0 endr=0.5 jetr=0.25 jetRa=0.33 gate=1.0 release=0.1
+dwgFlute :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dwgFlute rate freq pm endr jetr jetRa gate_ release = mkUGen Nothing [AR] (Left rate) "DWGFlute" [freq,pm,endr,jetr,jetRa,gate_,release] Nothing 1 (Special 0) NoId
+
+-- | Plucked physical model.
+--
+--  DWGPlucked [AR] freq=440.0 amp=0.5 gate=1.0 pos=0.14 c1=1.0 c3=30.0 inp=0.0 release=0.1
+dwgPlucked :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dwgPlucked rate freq amp gate_ pos c1 c3 inp release = mkUGen Nothing [AR] (Left rate) "DWGPlucked" [freq,amp,gate_,pos,c1,c3,inp,release] Nothing 1 (Special 0) NoId
+
+-- | Plucked physical model.
+--
+--  DWGPlucked2 [AR] freq=440.0 amp=0.5 gate=1.0 pos=0.14 c1=1.0 c3=30.0 inp=0.0 release=0.1 mistune=1.008 mp=0.55 gc=1.0e-2
+dwgPlucked2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dwgPlucked2 rate freq amp gate_ pos c1 c3 inp release mistune mp gc = mkUGen Nothing [AR] (Left rate) "DWGPlucked2" [freq,amp,gate_,pos,c1,c3,inp,release,mistune,mp,gc] Nothing 1 (Special 0) NoId
+
+-- | Plucked physical model.
+--
+--  DWGPluckedStiff [AR] freq=440.0 amp=0.5 gate=1.0 pos=0.14 c1=1.0 c3=30.0 inp=0.0 release=0.1 fB=2.0
+dwgPluckedStiff :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dwgPluckedStiff rate freq amp gate_ pos c1 c3 inp release fB = mkUGen Nothing [AR] (Left rate) "DWGPluckedStiff" [freq,amp,gate_,pos,c1,c3,inp,release,fB] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  DWGSoundBoard [AR] inp=0.0 c1=20.0 c3=20.0 mix=0.8 d1=199.0 d2=211.0 d3=223.0 d4=227.0 d5=229.0 d6=233.0 d7=239.0 d8=241.0
+dwgSoundBoard :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dwgSoundBoard inp c1 c3 mix d1 d2 d3 d4 d5 d6 d7 d8 = mkUGen Nothing [AR] (Right [0]) "DWGSoundBoard" [inp,c1,c3,mix,d1,d2,d3,d4,d5,d6,d7,d8] Nothing 1 (Special 0) NoId
+
+-- | demand rate brownian movement with Gendyn distributions
+--
+--  Dbrown2 [] lo=0.0 hi=0.0 step=0.0 dist=0.0 length=1.0e8
+dbrown2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dbrown2 rate lo hi step dist length_ = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Dbrown2" [lo,hi,step,dist,length_] Nothing 1 (Special 0) NoId
+
+-- | demand rate tag system on a buffer
+--
+--  DbufTag [DR] bufnum=0.0 v=0.0 axiom=0.0 rules=0.0 recycle=0.0 mode=0.0;    DEMAND/NONDET
+dbufTag :: ID a => a -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dbufTag z bufnum v axiom rules recycle mode = mkUGen Nothing [DR] (Left DR) "DbufTag" [bufnum,v,axiom,rules,recycle,mode] Nothing 1 (Special 0) (toUId z)
+
+-- | Samplerate and bitrate reduction
+--
+--  Decimator [AR] in=0.0 rate=44100.0 bits=24.0
+decimator :: Rate -> UGen -> UGen -> UGen -> UGen
+decimator rate in_ rate_ bits = mkUGen Nothing [AR] (Left rate) "Decimator" [in_,rate_,bits] Nothing 1 (Special 0) NoId
+
+-- | Demand version of the BetaBlocker VChip
+--
+--  DetaBlockerBuf [DR] bufnum=0.0 startpoint=0.0;    DEMAND/NONDET
+detaBlockerBuf :: ID a => a -> UGen -> UGen -> UGen
+detaBlockerBuf z bufnum startpoint = mkUGen Nothing [DR] (Left DR) "DetaBlockerBuf" [bufnum,startpoint] Nothing 1 (Special 0) (toUId z)
+
+-- | demand rate finite state machine
+--
+--  Dfsm [DR] rules=0.0 n=1.0 rgen=0.0;    DEMAND/NONDET
+dfsm :: ID a => a -> UGen -> UGen -> UGen -> UGen
+dfsm z rules n rgen = mkUGen Nothing [DR] (Left DR) "Dfsm" [rules,n,rgen] Nothing 1 (Special 0) (toUId z)
+
+-- | (Undocumented class)
+--
+--  Dgauss [] lo=0.0 hi=0.0 length=1.0e8
+dgauss :: Rate -> UGen -> UGen -> UGen -> UGen
+dgauss rate lo hi length_ = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Dgauss" [lo,hi,length_] Nothing 1 (Special 0) NoId
+
+-- | Ring modulation based on the physical model of a diode.
+--
+--  DiodeRingMod [AR] car=0.0 mod=0.0;    FILTER: TRUE
+diodeRingMod :: UGen -> UGen -> UGen
+diodeRingMod car mod_ = mkUGen Nothing [AR] (Right [0]) "DiodeRingMod" [car,mod_] Nothing 1 (Special 0) NoId
+
+-- | port of some ladspa plugins
+--
+--  Disintegrator [AR] in=0.0 probability=0.5 multiplier=0.0;    FILTER: TRUE, NONDET
+disintegrator :: ID a => a -> UGen -> UGen -> UGen -> UGen
+disintegrator z in_ probability multiplier = mkUGen Nothing [AR] (Right [0]) "Disintegrator" [in_,probability,multiplier] Nothing 1 (Special 0) (toUId z)
+
+-- | discrete time neurodynamics
+--
+--  Dneuromodule [KR,AR,DR] dt=0.0 *theta=0.0 *x=0.0 *weights=0.0;    MCE=3, NC INPUT: True, NONDET
+dneuromodule :: ID a => Int -> a -> UGen -> UGen -> UGen -> UGen -> UGen
+dneuromodule numChannels z dt theta x weights = mkUGen Nothing [KR,AR,DR] (Left DR) "Dneuromodule" [dt] (Just [theta,x,weights]) numChannels (Special 0) (toUId z)
+
+-- | Nested Allpass filters as proposed by Vercoe and Pluckett
+--
+--  DoubleNestedAllpassC [AR] in=0.0 maxdelay1=4.7e-3 delay1=4.7e-3 gain1=0.15 maxdelay2=2.2e-2 delay2=2.2e-2 gain2=0.25 maxdelay3=8.3e-3 delay3=8.3e-3 gain3=0.3;    FILTER: TRUE
+doubleNestedAllpassC :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+doubleNestedAllpassC in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 maxdelay3 delay3 gain3 = mkUGen Nothing [AR] (Right [0]) "DoubleNestedAllpassC" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2,maxdelay3,delay3,gain3] Nothing 1 (Special 0) NoId
+
+-- | Nested Allpass filters as proposed by Vercoe and Pluckett
+--
+--  DoubleNestedAllpassL [AR] in=0.0 maxdelay1=4.7e-3 delay1=4.7e-3 gain1=0.15 maxdelay2=2.2e-2 delay2=2.2e-2 gain2=0.25 maxdelay3=8.3e-3 delay3=8.3e-3 gain3=0.3;    FILTER: TRUE
+doubleNestedAllpassL :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+doubleNestedAllpassL in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 maxdelay3 delay3 gain3 = mkUGen Nothing [AR] (Right [0]) "DoubleNestedAllpassL" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2,maxdelay3,delay3,gain3] Nothing 1 (Special 0) NoId
+
+-- | Nested Allpass filters as proposed by Vercoe and Pluckett
+--
+--  DoubleNestedAllpassN [AR] in=0.0 maxdelay1=4.7e-3 delay1=4.7e-3 gain1=0.15 maxdelay2=2.2e-2 delay2=2.2e-2 gain2=0.25 maxdelay3=8.3e-3 delay3=8.3e-3 gain3=0.3;    FILTER: TRUE
+doubleNestedAllpassN :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+doubleNestedAllpassN in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 maxdelay3 delay3 gain3 = mkUGen Nothing [AR] (Right [0]) "DoubleNestedAllpassN" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2,maxdelay3,delay3,gain3] Nothing 1 (Special 0) NoId
+
+-- | Forced DoubleWell Oscillator
+--
+--  DoubleWell [AR] reset=0.0 ratex=1.0e-2 ratey=1.0e-2 f=1.0 w=1.0e-3 delta=1.0 initx=0.0 inity=0.0
+doubleWell :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+doubleWell rate reset ratex ratey f w delta initx inity = mkUGen Nothing [AR] (Left rate) "DoubleWell" [reset,ratex,ratey,f,w,delta,initx,inity] Nothing 1 (Special 0) NoId
+
+-- | Forced DoubleWell Oscillator
+--
+--  DoubleWell2 [AR] reset=0.0 ratex=1.0e-2 ratey=1.0e-2 f=1.0 w=1.0e-3 delta=1.0 initx=0.0 inity=0.0
+doubleWell2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+doubleWell2 rate reset ratex ratey f w delta initx inity = mkUGen Nothing [AR] (Left rate) "DoubleWell2" [reset,ratex,ratey,f,w,delta,initx,inity] Nothing 1 (Special 0) NoId
+
+-- | Forced DoubleWell Oscillator
+--
+--  DoubleWell3 [AR] reset=0.0 rate=1.0e-2 f=0.0 delta=0.25 initx=0.0 inity=0.0
+doubleWell3 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+doubleWell3 rate reset rate_ f delta initx inity = mkUGen Nothing [AR] (Left rate) "DoubleWell3" [reset,rate_,f,delta,initx,inity] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  DriveNoise [AR] in=0.0 amount=1.0 multi=5.0
+driveNoise :: Rate -> UGen -> UGen -> UGen -> UGen
+driveNoise rate in_ amount multi = mkUGen Nothing [AR] (Left rate) "DriveNoise" [in_,amount,multi] Nothing 1 (Special 0) NoId
+
+-- | Crosscorrelation search and drum pattern matching beat tracker
+--
+--  DrumTrack [KR] in=0.0 lock=0.0 dynleak=0.0 tempowt=0.0 phasewt=0.0 basswt=0.0 patternwt=1.0 prior=0.0 kicksensitivity=1.0 snaresensitivity=1.0 debugmode=0.0
+drumTrack :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+drumTrack rate in_ lock dynleak tempowt phasewt basswt patternwt prior kicksensitivity snaresensitivity debugmode = mkUGen Nothing [KR] (Left rate) "DrumTrack" [in_,lock,dynleak,tempowt,phasewt,basswt,patternwt,prior,kicksensitivity,snaresensitivity,debugmode] Nothing 4 (Special 0) NoId
+
+-- | demand rate tag system
+--
+--  Dtag [] bufsize=0.0 v=0.0 axiom=0.0 rules=0.0 recycle=0.0 mode=0.0
+dtag :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+dtag rate bufsize v axiom rules recycle mode = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Dtag" [bufsize,v,axiom,rules,recycle,mode] Nothing 1 (Special 0) NoId
+
+-- | Envelope Follower Filter
+--
+--  EnvDetect [AR] in=0.0 attack=100.0 release=0.0
+envDetect :: Rate -> UGen -> UGen -> UGen -> UGen
+envDetect rate in_ attack release = mkUGen Nothing [AR] (Left rate) "EnvDetect" [in_,attack,release] Nothing 1 (Special 0) NoId
+
+-- | Envelope Follower
+--
+--  EnvFollow [KR,AR] input=0.0 decaycoeff=0.99
+envFollow :: Rate -> UGen -> UGen -> UGen
+envFollow rate input decaycoeff = mkUGen Nothing [KR,AR] (Left rate) "EnvFollow" [input,decaycoeff] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FFTComplexDev [KR] buffer=0.0 rectify=0.0 powthresh=0.1
+fftComplexDev :: Rate -> UGen -> UGen -> UGen -> UGen
+fftComplexDev rate buffer rectify powthresh = mkUGen Nothing [KR] (Left rate) "FFTComplexDev" [buffer,rectify,powthresh] Nothing 1 (Special 0) NoId
+
+-- | Spectral crest measure
+--
+--  FFTCrest [KR] buffer=0.0 freqlo=0.0 freqhi=50000.0
+fftCrest :: Rate -> UGen -> UGen -> UGen -> UGen
+fftCrest rate buffer freqlo freqhi = mkUGen Nothing [KR] (Left rate) "FFTCrest" [buffer,freqlo,freqhi] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FFTDiffMags [KR] bufferA=0.0 bufferB=0.0
+fftDiffMags :: Rate -> UGen -> UGen -> UGen
+fftDiffMags rate bufferA bufferB = mkUGen Nothing [KR] (Left rate) "FFTDiffMags" [bufferA,bufferB] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FFTFlux [KR] buffer=0.0 normalise=1.0
+fftFlux :: Rate -> UGen -> UGen -> UGen
+fftFlux rate buffer normalise = mkUGen Nothing [KR] (Left rate) "FFTFlux" [buffer,normalise] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FFTFluxPos [KR] buffer=0.0 normalise=1.0
+fftFluxPos :: Rate -> UGen -> UGen -> UGen
+fftFluxPos rate buffer normalise = mkUGen Nothing [KR] (Left rate) "FFTFluxPos" [buffer,normalise] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FFTMKL [KR] buffer=0.0 epsilon=1.0e-6
+fftmkl :: Rate -> UGen -> UGen -> UGen
+fftmkl rate buffer epsilon = mkUGen Nothing [KR] (Left rate) "FFTMKL" [buffer,epsilon] Nothing 1 (Special 0) NoId
+
+-- | Find peak value in an FFT frame
+--
+--  FFTPeak [KR] buffer=0.0 freqlo=0.0 freqhi=50000.0
+fftPeak :: Rate -> UGen -> UGen -> UGen -> UGen
+fftPeak rate buffer freqlo freqhi = mkUGen Nothing [KR] (Left rate) "FFTPeak" [buffer,freqlo,freqhi] Nothing 2 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FFTPhaseDev [KR] buffer=0.0 weight=0.0 powthresh=0.1
+fftPhaseDev :: Rate -> UGen -> UGen -> UGen -> UGen
+fftPhaseDev rate buffer weight powthresh = mkUGen Nothing [KR] (Left rate) "FFTPhaseDev" [buffer,weight,powthresh] Nothing 1 (Special 0) NoId
+
+-- | Instantaneous spectral power
+--
+--  FFTPower [KR] buffer=0.0 square=1.0
+fftPower :: Rate -> UGen -> UGen -> UGen
+fftPower rate buffer square = mkUGen Nothing [KR] (Left rate) "FFTPower" [buffer,square] Nothing 1 (Special 0) NoId
+
+-- | Spectral slope
+--
+--  FFTSlope [KR] buffer=0.0
+fftSlope :: Rate -> UGen -> UGen
+fftSlope rate buffer = mkUGen Nothing [KR] (Left rate) "FFTSlope" [buffer] Nothing 1 (Special 0) NoId
+
+-- | Spectral spread
+--
+--  FFTSpread [KR] buffer=0.0 centroid=0.0
+fftSpread :: Rate -> UGen -> UGen -> UGen
+fftSpread rate buffer centroid = mkUGen Nothing [KR] (Left rate) "FFTSpread" [buffer,centroid] Nothing 1 (Special 0) NoId
+
+-- | Spectral flatness, divided into subbands
+--
+--  FFTSubbandFlatness [KR] chain=0.0 cutfreqs=0.0
+fftSubbandFlatness :: Rate -> UGen -> UGen -> UGen
+fftSubbandFlatness rate chain cutfreqs = mkUGen Nothing [KR] (Left rate) "FFTSubbandFlatness" [chain,cutfreqs] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FFTSubbandFlux [KR] chain=0.0 cutfreqs=0.0 posonly=0.0
+fftSubbandFlux :: Rate -> UGen -> UGen -> UGen -> UGen
+fftSubbandFlux rate chain cutfreqs posonly = mkUGen Nothing [KR] (Left rate) "FFTSubbandFlux" [chain,cutfreqs,posonly] Nothing 1 (Special 0) NoId
+
+-- | Spectral power, divided into subbands
+--
+--  FFTSubbandPower [KR] chain=0.0 cutfreqs=0.0 square=1.0 scalemode=1.0
+fftSubbandPower :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+fftSubbandPower rate chain cutfreqs square scalemode = mkUGen Nothing [KR] (Left rate) "FFTSubbandPower" [chain,cutfreqs,square,scalemode] Nothing 1 (Special 0) NoId
+
+-- | Phase modulation oscillator matrix.
+--
+--  FM7 [AR] *ctlMatrix=0.0 *modMatrix=0.0;    MCE=2
+fm7 :: Rate -> UGen -> UGen -> UGen
+fm7 rate ctlMatrix modMatrix = mkUGen Nothing [AR] (Left rate) "FM7" [] (Just [ctlMatrix,modMatrix]) 6 (Special 0) NoId
+
+-- | Granular synthesis with FM grains
+--
+--  FMGrain [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0;    FILTER: TRUE
+fmGrain :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fmGrain trigger dur carfreq modfreq index_ = mkUGen Nothing [AR] (Right [0]) "FMGrain" [trigger,dur,carfreq,modfreq,index_] Nothing 1 (Special 0) NoId
+
+-- | Granular synthesis with FM grains and user supplied envelope
+--
+--  FMGrainB [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf=0.0;    FILTER: TRUE
+fmGrainB :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fmGrainB trigger dur carfreq modfreq index_ envbuf = mkUGen Nothing [AR] (Right [0]) "FMGrainB" [trigger,dur,carfreq,modfreq,index_,envbuf] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FMGrainBBF [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
+fmGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fmGrainBBF rate trigger dur carfreq modfreq index_ envbuf azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "FMGrainBBF" [trigger,dur,carfreq,modfreq,index_,envbuf,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FMGrainBF [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
+fmGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fmGrainBF rate trigger dur carfreq modfreq index_ azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "FMGrainBF" [trigger,dur,carfreq,modfreq,index_,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
+
+-- | Granular synthesis with FM grains and user supplied envelopes
+--
+--  FMGrainI [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5
+fmGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fmGrainI rate trigger dur carfreq modfreq index_ envbuf1 envbuf2 ifac = mkUGen Nothing [AR] (Left rate) "FMGrainI" [trigger,dur,carfreq,modfreq,index_,envbuf1,envbuf2,ifac] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FMGrainIBF [AR] trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
+fmGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fmGrainIBF rate trigger dur carfreq modfreq index_ envbuf1 envbuf2 ifac azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "FMGrainIBF" [trigger,dur,carfreq,modfreq,index_,envbuf1,envbuf2,ifac,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
+
+-- | Decode an FMH signal for a specific speaker
+--
+--  FMHDecode1 [AR] w=0.0 x=0.0 y=0.0 z=0.0 r=0.0 s=0.0 t=0.0 u=0.0 v=0.0 azimuth=0.0 elevation=0.0
+fmhDecode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fmhDecode1 rate w x y z r s t u v azimuth elevation = mkUGen Nothing [AR] (Left rate) "FMHDecode1" [w,x,y,z,r,s,t,u,v,azimuth,elevation] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FMHEncode0 [AR] in=0.0 azimuth=0.0 elevation=0.0 gain=1.0
+fmhEncode0 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+fmhEncode0 rate in_ azimuth elevation gain = mkUGen Nothing [AR] (Left rate) "FMHEncode0" [in_,azimuth,elevation,gain] Nothing 9 (Special 0) NoId
+
+-- | Second Order Ambisonic encoder
+--
+--  FMHEncode1 [AR] in=0.0 azimuth=0.0 elevation=0.0 rho=1.0 gain=1.0 wComp=0.0
+fmhEncode1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fmhEncode1 rate in_ azimuth elevation rho gain wComp = mkUGen Nothing [AR] (Left rate) "FMHEncode1" [in_,azimuth,elevation,rho,gain,wComp] Nothing 9 (Special 0) NoId
+
+-- | Second Order Ambisonic encoder
+--
+--  FMHEncode2 [AR] in=0.0 point_x=0.0 point_y=0.0 elevation=0.0 gain=1.0 wComp=0.0
+fmhEncode2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fmhEncode2 rate in_ point_x point_y elevation gain wComp = mkUGen Nothing [AR] (Left rate) "FMHEncode2" [in_,point_x,point_y,elevation,gain,wComp] Nothing 9 (Special 0) NoId
+
+-- | Storing feature data from UGens in NRT mode
+--
+--  FeatureSave [KR] features=0.0 trig=0.0
+featureSave :: Rate -> UGen -> UGen -> UGen
+featureSave rate features trig_ = mkUGen Nothing [KR] (Left rate) "FeatureSave" [features,trig_] Nothing 1 (Special 0) NoId
+
+-- | FitzHughNagumo Neuron Firing Oscillator
+--
+--  Fhn2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0
+fhn2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fhn2DC rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "Fhn2DC" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId
+
+-- | FitzHughNagumo Neuron Firing Oscillator
+--
+--  Fhn2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0
+fhn2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fhn2DL rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "Fhn2DL" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId
+
+-- | FitzHughNagumo Neuron Firing Oscillator
+--
+--  Fhn2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0
+fhn2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fhn2DN rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "Fhn2DN" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FhnTrig [KR,AR] minfreq=4.0 maxfreq=10.0 urate=0.1 wrate=0.1 b0=0.6 b1=0.8 i=0.0 u0=0.0 w0=0.0
+fhnTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fhnTrig rate minfreq maxfreq urate wrate b0 b1 i u0 w0 = mkUGen Nothing [KR,AR] (Left rate) "FhnTrig" [minfreq,maxfreq,urate,wrate,b0,b1,i,u0,w0] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FincoSprottL [AR] freq=22050.0 a=2.45 h=5.0e-2 xi=0.0 yi=0.0 zi=0.0
+fincoSprottL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fincoSprottL rate freq a h xi yi zi = mkUGen Nothing [AR] (Left rate) "FincoSprottL" [freq,a,h,xi,yi,zi] Nothing 3 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FincoSprottM [AR] freq=22050.0 a=-7.0 b=4.0 h=5.0e-2 xi=0.0 yi=0.0 zi=0.0
+fincoSprottM :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fincoSprottM rate freq a b h xi yi zi = mkUGen Nothing [AR] (Left rate) "FincoSprottM" [freq,a,b,h,xi,yi,zi] Nothing 3 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  FincoSprottS [AR] freq=22050.0 a=8.0 b=2.0 h=5.0e-2 xi=0.0 yi=0.0 zi=0.0
+fincoSprottS :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fincoSprottS rate freq a b h xi yi zi = mkUGen Nothing [AR] (Left rate) "FincoSprottS" [freq,a,b,h,xi,yi,zi] Nothing 3 (Special 0) NoId
+
+-- | Neuron Firing Model Oscillator
+--
+--  FitzHughNagumo [AR] reset=0.0 rateu=1.0e-2 ratew=1.0e-2 b0=1.0 b1=1.0 initu=0.0 initw=0.0
+fitzHughNagumo :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+fitzHughNagumo rate reset rateu ratew b0 b1 initu initw = mkUGen Nothing [AR] (Left rate) "FitzHughNagumo" [reset,rateu,ratew,b0,b1,initu,initw] Nothing 1 (Special 0) NoId
+
+-- | calculates spectral MSE distance of two fft chains
+--
+--  FrameCompare [KR] buffer1=0.0 buffer2=0.0 wAmount=0.5
+frameCompare :: Rate -> UGen -> UGen -> UGen -> UGen
+frameCompare rate buffer1 buffer2 wAmount = mkUGen Nothing [KR] (Left rate) "FrameCompare" [buffer1,buffer2,wAmount] Nothing 1 (Special 0) NoId
+
+-- | A physical model of a system with dry-friction. A chaotic filter.
+--
+--  Friction [KR,AR] in=0.0 friction=0.5 spring=0.414 damp=0.313 mass=0.1 beltmass=1.0
+friction :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+friction rate in_ friction_ spring_ damp mass beltmass = mkUGen Nothing [KR,AR] (Left rate) "Friction" [in_,friction_,spring_,damp,mass,beltmass] Nothing 1 (Special 0) NoId
+
+-- | Single gammatone filter
+--
+--  Gammatone [AR] input=0.0 centrefrequency=440.0 bandwidth=200.0;    FILTER: TRUE
+gammatone :: UGen -> UGen -> UGen -> UGen
+gammatone input centrefrequency bandwidth = mkUGen Nothing [AR] (Right [0]) "Gammatone" [input,centrefrequency,bandwidth] Nothing 1 (Special 0) NoId
+
+-- | Gaussian classifier
+--
+--  GaussClass [KR] in=0.0 bufnum=0.0 gate=0.0
+gaussClass :: Rate -> UGen -> UGen -> UGen -> UGen
+gaussClass rate in_ bufnum gate_ = mkUGen Nothing [KR] (Left rate) "GaussClass" [in_,bufnum,gate_] Nothing 1 (Special 0) NoId
+
+-- | impulses around a certain frequency
+--
+--  GaussTrig [KR,AR] freq=440.0 dev=0.3
+gaussTrig :: Rate -> UGen -> UGen -> UGen
+gaussTrig rate freq dev = mkUGen Nothing [KR,AR] (Left rate) "GaussTrig" [freq,dev] Nothing 1 (Special 0) NoId
+
+-- | gingerbreadman map 2D chaotic generator
+--
+--  Gbman2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 x0=1.2 y0=2.1
+gbman2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+gbman2DC rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Gbman2DC" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | gingerbreadman map 2D chaotic generator
+--
+--  Gbman2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 x0=1.2 y0=2.1
+gbman2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+gbman2DL rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Gbman2DL" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | gingerbreadman map 2D chaotic generator
+--
+--  Gbman2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 x0=1.2 y0=2.1
+gbman2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+gbman2DN rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Gbman2DN" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  GbmanTrig [KR,AR] minfreq=5.0 maxfreq=10.0 x0=1.2 y0=2.1
+gbmanTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+gbmanTrig rate minfreq maxfreq x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "GbmanTrig" [minfreq,maxfreq,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | Dynamic stochastic synthesis generator
+--
+--  Gendy4 [KR,AR] ampdist=1.0 durdist=1.0 adparam=1.0 ddparam=1.0 minfreq=440.0 maxfreq=660.0 ampscale=0.5 durscale=0.5 initCPs=12.0 knum=0.0
+gendy4 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+gendy4 rate ampdist durdist adparam ddparam minfreq maxfreq ampscale durscale initCPs knum = mkUGen Nothing [KR,AR] (Left rate) "Gendy4" [ampdist,durdist,adparam,ddparam,minfreq,maxfreq,ampscale,durscale,initCPs,knum] Nothing 1 (Special 0) NoId
+
+-- | Dynamic stochastic synthesis generator
+--
+--  Gendy5 [KR,AR] ampdist=1.0 durdist=1.0 adparam=1.0 ddparam=1.0 minfreq=440.0 maxfreq=660.0 ampscale=0.5 durscale=0.5 initCPs=12.0 knum=0.0
+gendy5 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+gendy5 rate ampdist durdist adparam ddparam minfreq maxfreq ampscale durscale initCPs knum = mkUGen Nothing [KR,AR] (Left rate) "Gendy5" [ampdist,durdist,adparam,ddparam,minfreq,maxfreq,ampscale,durscale,initCPs,knum] Nothing 1 (Special 0) NoId
+
+-- | Read (numeric) shell environment variables into a synth
+--
+--  Getenv [] key=0.0 defaultval=0.0
+getenv :: Rate -> UGen -> UGen -> UGen
+getenv rate key defaultval = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "Getenv" [key,defaultval] Nothing 1 (Special 0) NoId
+
+-- | backward compatibility
+--
+--  GlitchBPF [KR,AR] in=0.0 freq=440.0 rq=1.0
+glitchBPF :: Rate -> UGen -> UGen -> UGen -> UGen
+glitchBPF rate in_ freq rq = mkUGen Nothing [KR,AR] (Left rate) "GlitchBPF" [in_,freq,rq] Nothing 1 (Special 0) NoId
+
+-- | backward compatibility
+--
+--  GlitchBRF [KR,AR] in=0.0 freq=440.0 rq=1.0
+glitchBRF :: Rate -> UGen -> UGen -> UGen -> UGen
+glitchBRF rate in_ freq rq = mkUGen Nothing [KR,AR] (Left rate) "GlitchBRF" [in_,freq,rq] Nothing 1 (Special 0) NoId
+
+-- | backward compatibility
+--
+--  GlitchHPF [KR,AR] in=0.0 freq=440.0
+glitchHPF :: Rate -> UGen -> UGen -> UGen
+glitchHPF rate in_ freq = mkUGen Nothing [KR,AR] (Left rate) "GlitchHPF" [in_,freq] Nothing 1 (Special 0) NoId
+
+-- | backward compatibility
+--
+--  GlitchRHPF [KR,AR] in=0.0 freq=440.0 rq=1.0
+glitchRHPF :: UGen -> UGen -> UGen -> UGen
+glitchRHPF in_ freq rq = mkUGen Nothing [KR,AR] (Right [0]) "GlitchRHPF" [in_,freq,rq] Nothing 1 (Special 0) NoId
+
+-- | Calculate a single DFT bin, to detect presence of a frequency
+--
+--  Goertzel [KR] in=0.0 bufsize=1024.0 freq=0.0 hop=1.0
+goertzel :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+goertzel rate in_ bufsize freq hop = mkUGen Nothing [KR] (Left rate) "Goertzel" [in_,bufsize,freq,hop] Nothing 2 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  GrainBufJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 sndbuf=0.0 rate=1.0 pos=0.0 loop=0.0 interp=2.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0
+grainBufJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+grainBufJ rate numChannels trigger dur sndbuf rate_ pos loop interp grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainBufJ" [numChannels,trigger,dur,sndbuf,rate_,pos,loop,interp,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  GrainFMJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 carfreq=440.0 modfreq=200.0 index=1.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0
+grainFMJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+grainFMJ rate numChannels trigger dur carfreq modfreq index_ grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainFMJ" [numChannels,trigger,dur,carfreq,modfreq,index_,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  GrainInJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 in=0.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0
+grainInJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+grainInJ rate numChannels trigger dur in_ grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainInJ" [numChannels,trigger,dur,in_,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  GrainSinJ [AR] numChannels=1.0 trigger=0.0 dur=1.0 freq=440.0 grainAmp=1.0 pan=0.0 envbufnum=-1.0 maxGrains=512.0
+grainSinJ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+grainSinJ rate numChannels trigger dur freq grainAmp pan envbufnum maxGrains = mkUGen Nothing [AR] (Left rate) "GrainSinJ" [numChannels,trigger,dur,freq,grainAmp,pan,envbufnum,maxGrains] Nothing 1 (Special 0) NoId
+
+-- | dynamical system simulation (Newtonian gravitational force)
+--
+--  GravityGrid [AR] reset=0.0 rate=0.1 newx=0.0 newy=0.0 bufnum=0.0
+gravityGrid :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+gravityGrid rate reset rate_ newx newy bufnum = mkUGen Nothing [AR] (Left rate) "GravityGrid" [reset,rate_,newx,newy,bufnum] Nothing 1 (Special 0) NoId
+
+-- | dynamical system simulation (Newtonian gravitational force)
+--
+--  GravityGrid2 [AR] reset=0.0 rate=0.1 newx=0.0 newy=0.0 bufnum=0.0
+gravityGrid2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+gravityGrid2 rate reset rate_ newx newy bufnum = mkUGen Nothing [AR] (Left rate) "GravityGrid2" [reset,rate_,newx,newy,bufnum] Nothing 1 (Special 0) NoId
+
+-- | algorithmic delay
+--
+--  GreyholeRaw [AR] in1=0.0 in2=0.0 damping=0.0 delaytime=2.0 diffusion=0.5 feedback=0.9 moddepth=0.1 modfreq=2.0 size=1.0;    FILTER: TRUE
+greyholeRaw :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+greyholeRaw in1 in2 damping delaytime diffusion feedback moddepth modfreq size = mkUGen Nothing [AR] (Right [0,1]) "GreyholeRaw" [in1,in2,damping,delaytime,diffusion,feedback,moddepth,modfreq,size] Nothing 2 (Special 0) NoId
+
+-- | Simple cochlear hair cell model
+--
+--  HairCell [KR,AR] input=0.0 spontaneousrate=0.0 boostrate=200.0 restorerate=1000.0 loss=0.99;    FILTER: TRUE
+hairCell :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+hairCell input spontaneousrate boostrate restorerate loss = mkUGen Nothing [KR,AR] (Right [0]) "HairCell" [input,spontaneousrate,boostrate,restorerate,loss] Nothing 1 (Special 0) NoId
+
+
+-- | 16 voice harmonic oscillator
+--
+--  HarmonicOsc [KR,AR] freq=100.0 firstharmonic=1.0 *amplitudes=0.0
+harmonicOsc :: Rate -> UGen -> UGen -> UGen -> UGen
+harmonicOsc rate freq firstharmonic amplitudes = mkUGen Nothing [KR,AR] (Left rate) "HarmonicOsc" [freq,firstharmonic] (Just [amplitudes]) 1 (Special 0) NoId
+
+-- | henon map 2D chaotic generator
+--
+--  Henon2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933
+henon2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+henon2DC rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Henon2DC" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | henon map 2D chaotic generator
+--
+--  Henon2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933
+henon2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+henon2DL rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Henon2DL" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | henon map 2D chaotic generator
+--
+--  Henon2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933
+henon2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+henon2DN rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Henon2DN" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  HenonTrig [KR,AR] minfreq=5.0 maxfreq=10.0 a=1.4 b=0.3 x0=0.30501993062401 y0=0.20938865431933
+henonTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+henonTrig rate minfreq maxfreq a b x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "HenonTrig" [minfreq,maxfreq,a,b,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | Transform a cepstrum back to a spectrum
+--
+--  ICepstrum [] cepchain=0.0 fftbuf=0.0
+iCepstrum :: Rate -> UGen -> UGen -> UGen
+iCepstrum rate cepchain fftbuf = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "ICepstrum" [cepchain,fftbuf] Nothing 1 (Special 0) NoId
+
+-- | 24db/oct rolloff, 4nd order resonant Low Pass Filter
+--
+--  IIRFilter [AR] in=0.0 freq=440.0 rq=1.0;    FILTER: TRUE
+iirFilter :: UGen -> UGen -> UGen -> UGen
+iirFilter in_ freq rq = mkUGen Nothing [AR] (Right [0]) "IIRFilter" [in_,freq,rq] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  InGrain [AR] trigger=0.0 dur=1.0 in=0.0
+inGrain :: Rate -> UGen -> UGen -> UGen -> UGen
+inGrain rate trigger dur in_ = mkUGen Nothing [AR] (Left rate) "InGrain" [trigger,dur,in_] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  InGrainB [AR] trigger=0.0 dur=1.0 in=0.0 envbuf=0.0
+inGrainB :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+inGrainB rate trigger dur in_ envbuf = mkUGen Nothing [AR] (Left rate) "InGrainB" [trigger,dur,in_,envbuf] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  InGrainBBF [AR] trigger=0.0 dur=1.0 in=0.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
+inGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+inGrainBBF rate trigger dur in_ envbuf azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "InGrainBBF" [trigger,dur,in_,envbuf,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  InGrainBF [AR] trigger=0.0 dur=1.0 in=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
+inGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+inGrainBF rate trigger dur in_ azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "InGrainBF" [trigger,dur,in_,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  InGrainI [AR] trigger=0.0 dur=1.0 in=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5
+inGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+inGrainI rate trigger dur in_ envbuf1 envbuf2 ifac = mkUGen Nothing [AR] (Left rate) "InGrainI" [trigger,dur,in_,envbuf1,envbuf2,ifac] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  InGrainIBF [AR] trigger=0.0 dur=1.0 in=0.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
+inGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+inGrainIBF rate trigger dur in_ envbuf1 envbuf2 ifac azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "InGrainIBF" [trigger,dur,in_,envbuf1,envbuf2,ifac,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
+
+-- | Distortion by subtracting magnitude from 1
+--
+--  InsideOut [KR,AR] in=0.0
+insideOut :: Rate -> UGen -> UGen
+insideOut rate in_ = mkUGen Nothing [KR,AR] (Left rate) "InsideOut" [in_] Nothing 1 (Special 0) NoId
+
+-- | instruction synthesis (breakpoint set interpreter)
+--
+--  Instruction [AR] bufnum=0.0
+instruction :: Rate -> UGen -> UGen
+instruction rate bufnum = mkUGen Nothing [AR] (Left rate) "Instruction" [bufnum] Nothing 1 (Special 0) NoId
+
+-- | Raw version of the JPverb algorithmic reverberator, designed to produce long tails with chorusing
+--
+--  JPverbRaw [KR,AR] in1=0.0 in2=0.0 damp=0.0 earlydiff=0.707 highband=2000.0 highx=1.0 lowband=500.0 lowx=1.0 mdepth=0.1 mfreq=2.0 midx=1.0 size=1.0 t60=1.0;    FILTER: TRUE
+jPverbRaw :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+jPverbRaw in1 in2 damp earlydiff highband highx lowband lowx mdepth mfreq midx size t60 = mkUGen Nothing [KR,AR] (Right [0]) "JPverbRaw" [in1,in2,damp,earlydiff,highband,highx,lowband,lowx,mdepth,mfreq,midx,size,t60] Nothing 2 (Special 0) NoId
+
+-- | k-means classification in real time
+--
+--  KMeansRT [KR] bufnum=0.0 inputdata=0.0 k=5.0 gate=1.0 reset=0.0 learn=1.0
+kMeansRT :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+kMeansRT rate bufnum inputdata k gate_ reset learn = mkUGen Nothing [KR] (Left rate) "KMeansRT" [bufnum,inputdata,k,gate_,reset,learn] Nothing 1 (Special 0) NoId
+
+-- | Running score of maximum correlation of chromagram with key profiles
+--
+--  KeyClarity [KR] chain=0.0 keydecay=2.0 chromaleak=0.5
+keyClarity :: Rate -> UGen -> UGen -> UGen -> UGen
+keyClarity rate chain keydecay chromaleak = mkUGen Nothing [KR] (Left rate) "KeyClarity" [chain,keydecay,chromaleak] Nothing 1 (Special 0) NoId
+
+-- | Find best correlated key mode with chromagram between major, minor and chromatic cluster
+--
+--  KeyMode [KR] chain=0.0 keydecay=2.0 chromaleak=0.5
+keyMode :: Rate -> UGen -> UGen -> UGen -> UGen
+keyMode rate chain keydecay chromaleak = mkUGen Nothing [KR] (Left rate) "KeyMode" [chain,keydecay,chromaleak] Nothing 1 (Special 0) NoId
+
+-- | K-means Oscillator
+--
+--  KmeansToBPSet1 [AR] freq=440.0 numdatapoints=20.0 maxnummeans=4.0 nummeans=4.0 tnewdata=1.0 tnewmeans=1.0 soft=1.0 bufnum=0.0
+kmeansToBPSet1 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+kmeansToBPSet1 rate freq numdatapoints maxnummeans nummeans tnewdata tnewmeans soft bufnum = mkUGen Nothing [AR] (Left rate) "KmeansToBPSet1" [freq,numdatapoints,maxnummeans,nummeans,tnewdata,tnewmeans,soft,bufnum] Nothing 1 (Special 0) NoId
+
+-- | random walk step
+--
+--  LFBrownNoise0 [KR,AR] freq=20.0 dev=1.0 dist=0.0;    NONDET
+lfBrownNoise0 :: ID a => a -> Rate -> UGen -> UGen -> UGen -> UGen
+lfBrownNoise0 z rate freq dev dist = mkUGen Nothing [KR,AR] (Left rate) "LFBrownNoise0" [freq,dev,dist] Nothing 1 (Special 0) (toUId z)
+
+-- | random walk linear interp
+--
+--  LFBrownNoise1 [KR,AR] freq=20.0 dev=1.0 dist=0.0;    NONDET
+lfBrownNoise1 :: ID a => a -> Rate -> UGen -> UGen -> UGen -> UGen
+lfBrownNoise1 z rate freq dev dist = mkUGen Nothing [KR,AR] (Left rate) "LFBrownNoise1" [freq,dev,dist] Nothing 1 (Special 0) (toUId z)
+
+-- | random walk cubic interp
+--
+--  LFBrownNoise2 [KR,AR] freq=20.0 dev=1.0 dist=0.0;    NONDET
+lfBrownNoise2 :: ID a => a -> Rate -> UGen -> UGen -> UGen -> UGen
+lfBrownNoise2 z rate freq dev dist = mkUGen Nothing [KR,AR] (Left rate) "LFBrownNoise2" [freq,dev,dist] Nothing 1 (Special 0) (toUId z)
+
+-- | Live Linear Predictive Coding Analysis and Resynthesis
+--
+--  LPCAnalyzer [AR] input=0.0 source=1.0e-2 n=256.0 p=10.0 testE=0.0 delta=0.999 windowtype=0.0;    FILTER: TRUE
+lpcAnalyzer :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+lpcAnalyzer input source n p testE delta windowtype = mkUGen Nothing [AR] (Right [0,1]) "LPCAnalyzer" [input,source,n,p,testE,delta,windowtype] Nothing 1 (Special 0) NoId
+
+-- | Linear Predictive Coding Gone Wrong
+--
+--  LPCError [AR] input=0.0 p=10.0
+lpcError :: Rate -> UGen -> UGen -> UGen
+lpcError rate input p = mkUGen Nothing [AR] (Left rate) "LPCError" [input,p] Nothing 1 (Special 0) NoId
+
+-- | Utilize LPC data
+--
+--  LPCSynth [AR] buffer=0.0 signal=0.0 pointer=0.0
+lpcSynth :: UGen -> UGen -> UGen -> UGen
+lpcSynth buffer signal pointer = mkUGen Nothing [AR] (Left AR) "LPCSynth" [buffer,signal,pointer] Nothing 1 (Special 0) NoId
+
+-- | Utilize LPC data
+--
+--  LPCVals [KR,AR] buffer=0.0 pointer=0.0
+lpcVals :: UGen -> UGen -> UGen
+lpcVals buffer pointer = mkUGen Nothing [KR,AR] (Left AR) "LPCVals" [buffer,pointer] Nothing 3 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  LPF1 [KR,AR] in=0.0 freq=1000.0
+lpf1 :: Rate -> UGen -> UGen -> UGen
+lpf1 rate in_ freq = mkUGen Nothing [KR,AR] (Left rate) "LPF1" [in_,freq] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  LPF18 [AR] in=0.0 freq=100.0 res=1.0 dist=0.4
+lpf18 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+lpf18 rate in_ freq res dist = mkUGen Nothing [AR] (Left rate) "LPF18" [in_,freq,res,dist] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  LPFVS6 [KR,AR] in=0.0 freq=1000.0 slope=0.5
+lpfvs6 :: Rate -> UGen -> UGen -> UGen -> UGen
+lpfvs6 rate in_ freq slope_ = mkUGen Nothing [KR,AR] (Left rate) "LPFVS6" [in_,freq,slope_] Nothing 1 (Special 0) NoId
+
+-- | A digital model of the Buchla Lowpass-Gate
+--
+--  LPG [AR] input=0.0 controlinput=0.0 controloffset=0.0 controlscale=1.0 vca=1.0 resonance=1.5 lowpassmode=1.0 linearity=1.0
+lpg :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+lpg input controlinput controloffset controlscale vca resonance lowpassmode linearity = mkUGen Nothing [AR] (Right [0]) "LPG" [input,controlinput,controloffset,controlscale,vca,resonance,lowpassmode,linearity] Nothing 1 (Special 0) NoId
+
+-- | Linear Time Invariant General Filter Equation
+--
+--  LTI [AR] input=0.0 bufnuma=0.0 bufnumb=1.0
+lti :: Rate -> UGen -> UGen -> UGen -> UGen
+lti rate input bufnuma bufnumb = mkUGen Nothing [AR] (Left rate) "LTI" [input,bufnuma,bufnumb] Nothing 1 (Special 0) NoId
+
+-- | latoocarfian 2D chaotic generator
+--
+--  Latoocarfian2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332
+latoocarfian2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+latoocarfian2DC rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Latoocarfian2DC" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | latoocarfian 2D chaotic generator
+--
+--  Latoocarfian2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332
+latoocarfian2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+latoocarfian2DL rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Latoocarfian2DL" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | latoocarfian 2D chaotic generator
+--
+--  Latoocarfian2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332
+latoocarfian2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+latoocarfian2DN rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Latoocarfian2DN" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  LatoocarfianTrig [KR,AR] minfreq=5.0 maxfreq=10.0 a=1.0 b=3.0 c=0.5 d=0.5 x0=0.34082301375036 y0=-0.38270086971332
+latoocarfianTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+latoocarfianTrig rate minfreq maxfreq a b c d x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "LatoocarfianTrig" [minfreq,maxfreq,a,b,c,d,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | Emit a sequence of triggers at specified time offsets
+--
+--  ListTrig [KR] bufnum=0.0 reset=0.0 offset=0.0 numframes=0.0
+listTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+listTrig rate bufnum reset offset numframes = mkUGen Nothing [KR] (Left rate) "ListTrig" [bufnum,reset,offset,numframes] Nothing 1 (Special 0) NoId
+
+-- | Emit a sequence of triggers at specified time offsets
+--
+--  ListTrig2 [KR] bufnum=0.0 reset=0.0 numframes=0.0
+listTrig2 :: Rate -> UGen -> UGen -> UGen -> UGen
+listTrig2 rate bufnum reset numframes = mkUGen Nothing [KR] (Left rate) "ListTrig2" [bufnum,reset,numframes] Nothing 1 (Special 0) NoId
+
+-- | Store values to a buffer, whenever triggered
+--
+--  Logger [KR] inputArray=0.0 trig=0.0 bufnum=0.0 reset=0.0
+logger :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+logger rate inputArray trig_ bufnum reset = mkUGen Nothing [KR] (Left rate) "Logger" [inputArray,trig_,bufnum,reset] Nothing 1 (Special 0) NoId
+
+-- | sample looping oscillator
+--
+--  LoopBuf [AR] bufnum=0.0 rate=1.0 gate=1.0 startPos=0.0 startLoop=0.0 endLoop=0.0 interpolation=2.0;    NC INPUT: True
+loopBuf :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+loopBuf numChannels rate bufnum rate_ gate_ startPos startLoop endLoop interpolation = mkUGen Nothing [AR] (Left rate) "LoopBuf" [bufnum,rate_,gate_,startPos,startLoop,endLoop,interpolation] Nothing numChannels (Special 0) NoId
+
+-- | lorenz 2D chaotic generator
+--
+--  Lorenz2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363
+lorenz2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+lorenz2DC rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "Lorenz2DC" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId
+
+-- | lorenz 2D chaotic generator
+--
+--  Lorenz2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363
+lorenz2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+lorenz2DL rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "Lorenz2DL" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId
+
+-- | lorenz 2D chaotic generator
+--
+--  Lorenz2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363
+lorenz2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+lorenz2DN rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "Lorenz2DN" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId
+
+-- | lorenz chaotic trigger generator
+--
+--  LorenzTrig [KR,AR] minfreq=11025.0 maxfreq=22050.0 s=10.0 r=28.0 b=2.6666667 h=2.0e-2 x0=9.0879182417163e-2 y0=2.97077458055 z0=24.282041054363
+lorenzTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+lorenzTrig rate minfreq maxfreq s r b h x0 y0 z0 = mkUGen Nothing [KR,AR] (Left rate) "LorenzTrig" [minfreq,maxfreq,s,r,b,h,x0,y0,z0] Nothing 1 (Special 0) NoId
+
+-- | simple resonating lowpass filter
+--
+--  Lores [AR] in=0.0 freq=880.0 res=0.5
+lores :: UGen -> UGen -> UGen -> UGen
+lores in_ freq res = mkUGen Nothing [AR] (Right [0]) "Lores" [in_,freq,res] Nothing 1 (Special 0) NoId
+
+-- | 2-species Predator-Prey model
+--
+--  LotkaVolterra [AR] freq=22050.0 a=1.5 b=1.5 c=0.5 d=1.5 h=5.0e-2 xi=1.0 yi=0.2
+lotkaVolterra :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+lotkaVolterra rate freq a b c d h xi yi = mkUGen Nothing [AR] (Left rate) "LotkaVolterra" [freq,a,b,c,d,h,xi,yi] Nothing 2 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  MCLDChaosGen [] maxSize=0.0
+mcldChaosGen :: Rate -> UGen -> UGen
+mcldChaosGen rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "MCLDChaosGen" [maxSize] Nothing 1 (Special 0) NoId
+
+-- | First order Markov Chain implementation for audio signals
+--
+--  MarkovSynth [AR] in=0.0 isRecording=1.0 waitTime=2.0 tableSize=10.0
+markovSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+markovSynth rate in_ isRecording waitTime tableSize = mkUGen Nothing [AR] (Left rate) "MarkovSynth" [in_,isRecording,waitTime,tableSize] Nothing 1 (Special 0) NoId
+
+-- | Real time sparse representation
+--
+--  MatchingP [KR,AR] dict=0.0 in=0.0 dictsize=1.0 ntofind=1.0 hop=1.0 method=0.0
+matchingP :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+matchingP rate dict in_ dictsize ntofind hop method = mkUGen Nothing [KR,AR] (Left rate) "MatchingP" [dict,in_,dictsize,ntofind,hop,method] Nothing 4 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  MatchingPResynth [KR,AR] dict=0.0 method=0.0 trigger=0.0 residual=0.0 activs=0.0
+matchingPResynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+matchingPResynth rate dict method trigger residual activs = mkUGen Nothing [KR,AR] (Left rate) "MatchingPResynth" [dict,method,trigger,residual,activs] Nothing 1 (Special 0) NoId
+
+-- | maximum within last x samples
+--
+--  Max [KR] in=0.0 numsamp=64.0
+max :: Rate -> UGen -> UGen -> UGen
+max rate in_ numsamp = mkUGen Nothing [KR] (Left rate) "Max" [in_,numsamp] Nothing 1 (Special 0) NoId
+
+-- | Tracks and prints amplitudes
+--
+--  Maxamp [AR] in=0.0 numSamps=1000.0
+maxamp :: Rate -> UGen -> UGen -> UGen
+maxamp rate in_ numSamps = mkUGen Nothing [AR] (Left rate) "Maxamp" [in_,numSamps] Nothing 1 (Special 0) NoId
+
+-- | Piano synthesiser
+--
+--  MdaPiano [AR] freq=440.0 gate=1.0 vel=100.0 decay=0.8 release=0.8 hard=0.8 velhard=0.8 muffle=0.8 velmuff=0.8 velcurve=0.8 stereo=0.2 tune=0.5 random=0.1 stretch=0.1 sustain=0.0
+mdaPiano :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+mdaPiano rate freq gate_ vel decay_ release hard velhard muffle velmuff velcurve stereo tune random stretch sustain = mkUGen Nothing [AR] (Left rate) "MdaPiano" [freq,gate_,vel,decay_,release,hard,velhard,muffle,velmuff,velcurve,stereo,tune,random,stretch,sustain] Nothing 2 (Special 0) NoId
+
+-- | Mean of recent values, triggered
+--
+--  MeanTriggered [KR,AR] in=0.0 trig=0.0 length=10.0
+meanTriggered :: Rate -> UGen -> UGen -> UGen -> UGen
+meanTriggered rate in_ trig_ length_ = mkUGen Nothing [KR,AR] (Left rate) "MeanTriggered" [in_,trig_,length_] Nothing 1 (Special 0) NoId
+
+-- | Meddis cochlear hair cell model
+--
+--  Meddis [KR,AR] input=0.0;    FILTER: TRUE
+meddis :: UGen -> UGen
+meddis input = mkUGen Nothing [KR,AR] (Right [0]) "Meddis" [input] Nothing 1 (Special 0) NoId
+
+-- | Separate harmonic and percussive parts of a signal
+--
+--  MedianSeparation [] fft=0.0 fftharmonic=0.0 fftpercussive=0.0 fftsize=1024.0 mediansize=17.0 hardorsoft=0.0 p=2.0 medianormax=0.0
+medianSeparation :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+medianSeparation rate fft_ fftharmonic fftpercussive fftsize mediansize hardorsoft p medianormax = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "MedianSeparation" [fft_,fftharmonic,fftpercussive,fftsize,mediansize,hardorsoft,p,medianormax] Nothing 2 (Special 0) NoId
+
+-- | Median of recent values, triggered
+--
+--  MedianTriggered [KR,AR] in=0.0 trig=0.0 length=10.0
+medianTriggered :: Rate -> UGen -> UGen -> UGen -> UGen
+medianTriggered rate in_ trig_ length_ = mkUGen Nothing [KR,AR] (Left rate) "MedianTriggered" [in_,trig_,length_] Nothing 1 (Special 0) NoId
+
+-- | Waveguide mesh physical models of drum membranes
+--
+--  MembraneCircle [AR] excitation=0.0 tension=5.0e-2 loss=0.99999
+membraneCircle :: Rate -> UGen -> UGen -> UGen -> UGen
+membraneCircle rate excitation tension loss = mkUGen Nothing [AR] (Left rate) "MembraneCircle" [excitation,tension,loss] Nothing 1 (Special 0) NoId
+
+-- | Waveguide mesh physical models of drum membranes
+--
+--  MembraneHexagon [AR] excitation=0.0 tension=5.0e-2 loss=0.99999
+membraneHexagon :: Rate -> UGen -> UGen -> UGen -> UGen
+membraneHexagon rate excitation tension loss = mkUGen Nothing [AR] (Left rate) "MembraneHexagon" [excitation,tension,loss] Nothing 1 (Special 0) NoId
+
+-- | Metronome
+--
+--  Metro [KR,AR] bpm=0.0 numBeats=0.0
+metro :: Rate -> UGen -> UGen -> UGen
+metro rate bpm numBeats = mkUGen Nothing [KR,AR] (Left rate) "Metro" [bpm,numBeats] Nothing 1 (Special 0) NoId
+
+-- | a macro oscillator
+--
+--  MiBraids [AR] pitch=60.0 timbre=0.5 color=0.5 model=0.0 trig=0.0 resamp=0.0 decim=0.0 bits=0.0 ws=0.0
+miBraids :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+miBraids rate pitch_ timbre color model trig_ resamp decim bits ws = mkUGen Nothing [AR] (Left rate) "MiBraids" [pitch_,timbre,color,model,trig_,resamp,decim,bits,ws] Nothing 1 (Special 0) NoId
+
+-- | granular audio processor and texture synthesizer
+--
+--  MiClouds [AR] pit=0.0 pos=0.5 size=0.25 dens=0.4 tex=0.5 drywet=0.5 in_gain=1.0 spread=0.5 rvb=0.0 fb=0.0 freeze=0.0 mode=0.0 lofi=0.0 trig=0.0 *inputArray=0.0;    MCE=1, REORDERS INPUTS: [14,0,1,2,3,4,5,6,7,8,9,10,11,12,13]
+miClouds :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+miClouds rate pit pos size dens tex drywet in_gain spread rvb fb freeze mode lofi trig_ inputArray = mkUGen Nothing [AR] (Left rate) "MiClouds" [pit,pos,size,dens,tex,drywet,in_gain,spread,rvb,fb,freeze,mode,lofi,trig_] (Just [inputArray]) 2 (Special 0) NoId
+
+-- | Physical modelling based on Modal Synthesis.
+--
+--  MiElements [AR] blow_in=0.0 strike_in=0.0 gate=0.0 pit=48.0 strength=0.5 contour=0.2 bow_level=0.0 blow_level=0.0 strike_level=0.0 flow=0.5 mallet=0.5 bow_timb=0.5 blow_timb=0.5 strike_timb=0.5 geom=0.25 bright=0.5 damp=0.7 pos=0.2 space=0.3 model=0.0 easteregg=0.0
+miElements :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+miElements rate blow_in strike_in gate_ pit strength contour bow_level blow_level strike_level flow mallet bow_timb blow_timb strike_timb geom bright damp pos space model easteregg = mkUGen Nothing [AR] (Left rate) "MiElements" [blow_in,strike_in,gate_,pit,strength,contour,bow_level,blow_level,strike_level,flow,mallet,bow_timb,blow_timb,strike_timb,geom,bright,damp,pos,space,model,easteregg] Nothing 2 (Special 0) NoId
+
+-- | µ-law audio companding
+--
+--  MiMu [AR] in=0.0 gain=1.0 bypass=0.0
+miMu :: Rate -> UGen -> UGen -> UGen -> UGen
+miMu rate in_ gain bypass = mkUGen Nothing [AR] (Left rate) "MiMu" [in_,gain,bypass] Nothing 1 (Special 0) NoId
+
+-- | FM Synth-Voice based on 'ominous'
+--
+--  MiOmi [AR] audio_in=0.0 gate=0.0 pit=48.0 contour=0.2 detune=0.25 level1=0.5 level2=0.5 ratio1=0.5 ratio2=0.5 fm1=0.0 fm2=0.0 fb=0.0 xfb=0.0 filter_mode=0.0 cutoff=0.5 reson=0.0 strength=0.5 env=0.5 rotate=0.2 space=0.5
+miOmi :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+miOmi rate audio_in gate_ pit contour detune level1 level2 ratio1 ratio2 fm1 fm2 fb xfb filter_mode cutoff reson strength env rotate_ space = mkUGen Nothing [AR] (Left rate) "MiOmi" [audio_in,gate_,pit,contour,detune,level1,level2,ratio1,ratio2,fm1,fm2,fb,xfb,filter_mode,cutoff,reson,strength,env,rotate_,space] Nothing 2 (Special 0) NoId
+
+-- | a macro oscillator
+--
+--  MiPlaits [AR] pitch=60.0 engine=0.0 harm=0.1 timbre=0.5 morph=0.5 trigger=0.0 level=0.0 fm_mod=0.0 timb_mod=0.0 morph_mod=0.0 decay=0.5 lpg_colour=0.5
+miPlaits :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+miPlaits rate pitch_ engine harm timbre morph trigger level fm_mod timb_mod morph_mod decay_ lpg_colour = mkUGen Nothing [AR] (Left rate) "MiPlaits" [pitch_,engine,harm,timbre,morph,trigger,level,fm_mod,timb_mod,morph_mod,decay_,lpg_colour] Nothing 2 (Special 0) NoId
+
+-- | a resonator
+--
+--  MiRings [AR] in=0.0 trig=0.0 pit=60.0 struct=0.25 bright=0.5 damp=0.7 pos=0.25 model=0.0 poly=1.0 intern_exciter=0.0 easteregg=0.0 bypass=0.0
+miRings :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+miRings rate in_ trig_ pit struct bright damp pos model poly intern_exciter easteregg bypass = mkUGen Nothing [AR] (Left rate) "MiRings" [in_,trig_,pit,struct,bright,damp,pos,model,poly,intern_exciter,easteregg,bypass] Nothing 2 (Special 0) NoId
+
+-- | Classic resonant LP filter
+--
+--  MiRipples [AR] in=0.0 cf=0.3 reson=0.2 drive=1.0;    FILTER: TRUE
+miRipples :: UGen -> UGen -> UGen -> UGen -> UGen
+miRipples in_ cf reson drive = mkUGen Nothing [AR] (Right [0]) "MiRipples" [in_,cf,reson,drive] Nothing 1 (Special 0) NoId
+
+-- | a quad LFO
+--
+--  MiTides [AR] freq=1.0 shape=0.5 slope=0.5 smooth=0.5 shift=0.2 trig=0.0 clock=0.0 output_mode=3.0 ramp_mode=1.0 ratio=9.0 rate=1.0
+miTides :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+miTides rate freq shape slope_ smooth shift trig_ clock output_mode ramp_mode ratio rate_ = mkUGen Nothing [AR] (Left rate) "MiTides" [freq,shape,slope_,smooth,shift,trig_,clock,output_mode,ramp_mode,ratio,rate_] Nothing 4 (Special 0) NoId
+
+-- | stereo reverb
+--
+--  MiVerb [AR] time=0.7 drywet=0.5 damp=0.5 hp=5.0e-2 freeze=0.0 diff=0.625 *inputArray=0.0;    MCE=1, FILTER: TRUE, REORDERS INPUTS: [6,0,1,2,3,4,5]
+miVerb :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+miVerb time drywet damp hp freeze diff inputArray = mkUGen Nothing [AR] (Right [6]) "MiVerb" [time,drywet,damp,hp,freeze,diff] (Just [inputArray]) 2 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  MiWarps [AR] carrier=0.0 modulator=0.0 lev1=0.5 lev2=0.5 algo=0.0 timb=0.0 osc=1.0 pit=60.0 easteregg=0.0
+miWarps :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+miWarps rate carrier modulator lev1 lev2 algo timb osc_ pit easteregg = mkUGen Nothing [AR] (Left rate) "MiWarps" [carrier,modulator,lev1,lev2,algo,timb,osc_,pit,easteregg] Nothing 2 (Special 0) NoId
+
+-- | Granulates real-time input
+--
+--  MonoGrain [AR] in=0.0 winsize=0.1 grainrate=10.0 winrandpct=0.0
+monoGrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+monoGrain rate in_ winsize grainrate winrandpct = mkUGen Nothing [AR] (Left rate) "MonoGrain" [in_,winsize,grainrate,winrandpct] Nothing 1 (Special 0) NoId
+
+-- | Granulates real-time input with Ambisonic panning
+--
+--  MonoGrainBF [AR] in=0.0 winsize=0.1 grainrate=10.0 winrandpct=0.0 azimuth=0.0 azrand=0.0 elevation=0.0 elrand=0.0 rho=1.0
+monoGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+monoGrainBF rate in_ winsize grainrate winrandpct azimuth azrand elevation elrand rho = mkUGen Nothing [AR] (Left rate) "MonoGrainBF" [in_,winsize,grainrate,winrandpct,azimuth,azrand,elevation,elrand,rho] Nothing 4 (Special 0) NoId
+
+-- | Moog Filter Emulation
+--
+--  MoogLadder [KR,AR] in=0.0 ffreq=440.0 res=0.0;    FILTER: TRUE
+moogLadder :: UGen -> UGen -> UGen -> UGen
+moogLadder in_ ffreq res = mkUGen Nothing [KR,AR] (Right [0]) "MoogLadder" [in_,ffreq,res] Nothing 1 (Special 0) NoId
+
+-- | Moog  filter emulation
+--
+--  MoogVCF [AR] in=0.0 fco=0.0 res=0.0
+moogVCF :: UGen -> UGen -> UGen -> UGen
+moogVCF in_ fco res = mkUGen Nothing [AR] (Right [0]) "MoogVCF" [in_,fco,res] Nothing 1 (Special 0) NoId
+
+-- | Stereo reverb
+--
+--  NHHall [AR] in1=0.0 in2=0.0 rt60=1.0 stereo=0.5 lowFreq=200.0 lowRatio=0.5 hiFreq=4000.0 hiRatio=0.5 earlyDiffusion=0.5 lateDiffusion=0.5 modRate=0.2 modDepth=0.3
+nhHall :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+nhHall in1 in2 rt60 stereo lowFreq lowRatio hiFreq hiRatio earlyDiffusion lateDiffusion modRate modDepth = mkUGen Nothing [AR] (Right [0,1]) "NHHall" [in1,in2,rt60,stereo,lowFreq,lowRatio,hiFreq,hiRatio,earlyDiffusion,lateDiffusion,modRate,modDepth] Nothing 2 (Special 0) NoId
+
+-- | Non Linear Filter Equation
+--
+--  NL [AR] input=0.0 bufnuma=0.0 bufnumb=1.0 guard1=1000.0 guard2=100.0
+nl :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+nl rate input bufnuma bufnumb guard1 guard2 = mkUGen Nothing [AR] (Left rate) "NL" [input,bufnuma,bufnumb,guard1,guard2] Nothing 1 (Special 0) NoId
+
+-- | Arbitrary Non Linear Filter Equation
+--
+--  NL2 [AR] input=0.0 bufnum=0.0 maxsizea=10.0 maxsizeb=10.0 guard1=1000.0 guard2=100.0
+nl2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+nl2 rate input bufnum maxsizea maxsizeb guard1 guard2 = mkUGen Nothing [AR] (Left rate) "NL2" [input,bufnum,maxsizea,maxsizeb,guard1,guard2] Nothing 1 (Special 0) NoId
+
+-- | Non-linear Filter
+--
+--  NLFiltC [KR,AR] input=0.0 a=0.0 b=0.0 d=0.0 c=0.0 l=0.0
+nlFiltC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+nlFiltC rate input a b d c l = mkUGen Nothing [KR,AR] (Left rate) "NLFiltC" [input,a,b,d,c,l] Nothing 1 (Special 0) NoId
+
+-- | Non-linear Filter
+--
+--  NLFiltL [KR,AR] input=0.0 a=0.0 b=0.0 d=0.0 c=0.0 l=0.0
+nlFiltL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+nlFiltL rate input a b d c l = mkUGen Nothing [KR,AR] (Left rate) "NLFiltL" [input,a,b,d,c,l] Nothing 1 (Special 0) NoId
+
+-- | Non-linear Filter
+--
+--  NLFiltN [KR,AR] input=0.0 a=0.0 b=0.0 d=0.0 c=0.0 l=0.0
+nlFiltN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+nlFiltN rate input a b d c l = mkUGen Nothing [KR,AR] (Left rate) "NLFiltN" [input,a,b,d,c,l] Nothing 1 (Special 0) NoId
+
+-- | physical modeling simulation; N tubes
+--
+--  NTube [AR] input=0.0 lossarray=1.0 karray=0.0 delaylengtharray=0.0
+nTube :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+nTube rate input lossarray karray delaylengtharray = mkUGen Nothing [AR] (Left rate) "NTube" [input,lossarray,karray,delaylengtharray] Nothing 1 (Special 0) NoId
+
+-- | Find the nearest-neighbours in a set of points
+--
+--  NearestN [KR] treebuf=0.0 in=0.0 gate=1.0 num=1.0
+nearestN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+nearestN rate treebuf in_ gate_ num = mkUGen Nothing [KR] (Left rate) "NearestN" [treebuf,in_,gate_,num] Nothing 3 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  NeedleRect [AR] rate=1.0 imgWidth=100.0 imgHeight=100.0 rectX=0.0 rectY=0.0 rectW=100.0 rectH=100.0
+needleRect :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+needleRect rate rate_ imgWidth imgHeight rectX rectY rectW rectH = mkUGen Nothing [AR] (Left rate) "NeedleRect" [rate_,imgWidth,imgHeight,rectX,rectY,rectW,rectH] Nothing 1 (Special 0) NoId
+
+
+-- | Formant oscillator with aliasing-free phase reset
+--
+--  NeoFormant [KR,AR] formantfreq=100.0 carrierfreq=200.0 phaseshift=0.5
+neoFormant :: Rate -> UGen -> UGen -> UGen -> UGen
+neoFormant rate formantfreq carrierfreq phaseshift = mkUGen Nothing [KR,AR] (Left rate) "NeoFormant" [formantfreq,carrierfreq,phaseshift] Nothing 1 (Special 0) NoId
+
+-- | Variable saw oscillator
+--
+--  NeoVarSawOsc [KR,AR] freq=100.0 pw=0.5 waveshape=0.5
+neoVarSawOsc :: Rate -> UGen -> UGen -> UGen -> UGen
+neoVarSawOsc rate freq pw waveshape = mkUGen Nothing [KR,AR] (Left rate) "NeoVarSawOsc" [freq,pw,waveshape] Nothing 1 (Special 0) NoId
+
+-- | Nested Allpass filters as proposed by Vercoe and Pluckett
+--
+--  NestedAllpassC [AR] in=0.0 maxdelay1=3.6e-2 delay1=3.6e-2 gain1=8.0e-2 maxdelay2=3.0e-2 delay2=3.0e-2 gain2=0.3;    FILTER: TRUE
+nestedAllpassC :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+nestedAllpassC in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 = mkUGen Nothing [AR] (Right [0]) "NestedAllpassC" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2] Nothing 1 (Special 0) NoId
+
+-- | Nested Allpass filters as proposed by Vercoe and Pluckett
+--
+--  NestedAllpassL [AR] in=0.0 maxdelay1=3.6e-2 delay1=3.6e-2 gain1=8.0e-2 maxdelay2=3.0e-2 delay2=3.0e-2 gain2=0.3;    FILTER: TRUE
+nestedAllpassL :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+nestedAllpassL in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 = mkUGen Nothing [AR] (Right [0]) "NestedAllpassL" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2] Nothing 1 (Special 0) NoId
+
+-- | Nested Allpass filters as proposed by Vercoe and Pluckett
+--
+--  NestedAllpassN [AR] in=0.0 maxdelay1=3.6e-2 delay1=3.6e-2 gain1=8.0e-2 maxdelay2=3.0e-2 delay2=3.0e-2 gain2=0.3;    FILTER: TRUE
+nestedAllpassN :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+nestedAllpassN in_ maxdelay1 delay1_ gain1 maxdelay2 delay2_ gain2 = mkUGen Nothing [AR] (Right [0]) "NestedAllpassN" [in_,maxdelay1,delay1_,gain1,maxdelay2,delay2_,gain2] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  OSFold4 [AR] in=0.0 lo=0.0 hi=0.0
+osFold4 :: Rate -> UGen -> UGen -> UGen -> UGen
+osFold4 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSFold4" [in_,lo,hi] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  OSFold8 [AR] in=0.0 lo=0.0 hi=0.0
+osFold8 :: Rate -> UGen -> UGen -> UGen -> UGen
+osFold8 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSFold8" [in_,lo,hi] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  OSTrunc4 [AR] in=0.0 quant=0.5
+osTrunc4 :: Rate -> UGen -> UGen -> UGen
+osTrunc4 rate in_ quant = mkUGen Nothing [AR] (Left rate) "OSTrunc4" [in_,quant] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  OSTrunc8 [AR] in=0.0 quant=0.5
+osTrunc8 :: Rate -> UGen -> UGen -> UGen
+osTrunc8 rate in_ quant = mkUGen Nothing [AR] (Left rate) "OSTrunc8" [in_,quant] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  OSWrap4 [AR] in=0.0 lo=0.0 hi=0.0
+osWrap4 :: Rate -> UGen -> UGen -> UGen -> UGen
+osWrap4 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSWrap4" [in_,lo,hi] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  OSWrap8 [AR] in=0.0 lo=0.0 hi=0.0
+osWrap8 :: Rate -> UGen -> UGen -> UGen -> UGen
+osWrap8 rate in_ lo hi = mkUGen Nothing [AR] (Left rate) "OSWrap8" [in_,lo,hi] Nothing 1 (Special 0) NoId
+
+-- | Extract basic statistics from a series of onset triggers
+--
+--  OnsetStatistics [KR] input=0.0 windowsize=1.0 hopsize=0.1
+onsetStatistics :: Rate -> UGen -> UGen -> UGen -> UGen
+onsetStatistics rate input windowsize hopsize = mkUGen Nothing [KR] (Left rate) "OnsetStatistics" [input,windowsize,hopsize] Nothing 3 (Special 0) NoId
+
+-- | Chemical reaction modelling Oscillator
+--
+--  Oregonator [AR] reset=0.0 rate=1.0e-2 epsilon=1.0 mu=1.0 q=1.0 initx=0.5 inity=0.5 initz=0.5
+oregonator :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+oregonator rate reset rate_ epsilon mu q initx inity initz = mkUGen Nothing [AR] (Left rate) "Oregonator" [reset,rate_,epsilon,mu,q,initx,inity,initz] Nothing 3 (Special 0) NoId
+
+-- | An oscillator bank in the style of divide-down organs
+--
+--  OscBank [KR,AR] freq=100.0 gain=1.0 saw8=0.5 square8=0.5 saw4=0.5 square4=0.5 saw2=0.5 square2=0.5 saw1=0.5
+oscBank :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+oscBank rate freq gain saw8 square8 saw4 square4 saw2 square2 saw1 = mkUGen Nothing [KR,AR] (Left rate) "OscBank" [freq,gain,saw8,square8,saw4,square4,saw2,square2,saw1] Nothing 1 (Special 0) NoId
+
+-- | Piano physical model.
+--
+--  OteyPiano [AR] freq=440.0 vel=1.0 t_gate=0.0 rmin=0.35 rmax=2.0 rampl=4.0 rampr=8.0 rcore=1.0 lmin=7.0e-2 lmax=1.4 lampl=-4.0 lampr=4.0 rho=1.0 e=1.0 zb=1.0 zh=0.0 mh=1.0 k=0.2 alpha=1.0 p=1.0 hpos=0.142 loss=1.0 detune=3.0e-4 hammer_type=1.0
+oteyPiano :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+oteyPiano rate freq vel t_gate rmin rmax rampl rampr rcore lmin lmax lampl lampr rho e zb zh mh k alpha p hpos loss detune hammer_type = mkUGen Nothing [AR] (Left rate) "OteyPiano" [freq,vel,t_gate,rmin,rmax,rampl,rampr,rcore,lmin,lmax,lampl,lampr,rho,e,zb,zh,mh,k,alpha,p,hpos,loss,detune,hammer_type] Nothing 1 (Special 0) NoId
+
+-- | Piano physical model.
+--
+--  OteyPianoStrings [AR] freq=440.0 vel=1.0 t_gate=0.0 rmin=0.35 rmax=2.0 rampl=4.0 rampr=8.0 rcore=1.0 lmin=7.0e-2 lmax=1.4 lampl=-4.0 lampr=4.0 rho=1.0 e=1.0 zb=1.0 zh=0.0 mh=1.0 k=0.2 alpha=1.0 p=1.0 hpos=0.142 loss=1.0 detune=3.0e-4 hammer_type=1.0
+oteyPianoStrings :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+oteyPianoStrings rate freq vel t_gate rmin rmax rampl rampr rcore lmin lmax lampl lampr rho e zb zh mh k alpha p hpos loss detune hammer_type = mkUGen Nothing [AR] (Left rate) "OteyPianoStrings" [freq,vel,t_gate,rmin,rmax,rampl,rampr,rcore,lmin,lmax,lampl,lampr,rho,e,zb,zh,mh,k,alpha,p,hpos,loss,detune,hammer_type] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  OteySoundBoard [AR] inp=0.0 c1=20.0 c3=20.0 mix=0.8
+oteySoundBoard :: UGen -> UGen -> UGen -> UGen -> UGen
+oteySoundBoard inp c1 c3 mix = mkUGen Nothing [AR] (Right [0]) "OteySoundBoard" [inp,c1,c3,mix] Nothing 1 (Special 0) NoId
+
+-- | Return mag and freq data from a CSound pv
+--
+--  PVInfo [KR,AR] pvbuffer=0.0 binNum=0.0 filePointer=0.0
+pvInfo :: Rate -> UGen -> UGen -> UGen -> UGen
+pvInfo rate pvbuffer binNum filePointer = mkUGen Nothing [KR,AR] (Left rate) "PVInfo" [pvbuffer,binNum,filePointer] Nothing 2 (Special 0) NoId
+
+-- | Resynthesize Csound PV data
+--
+--  PVSynth [AR] pvbuffer=0.0 numBins=0.0 binStart=0.0 binSkip=1.0 filePointer=0.0 freqMul=1.0 freqAdd=0.0
+pvSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+pvSynth rate pvbuffer numBins binStart binSkip filePointer freqMul freqAdd = mkUGen Nothing [AR] (Left rate) "PVSynth" [pvbuffer,numBins,binStart,binSkip,filePointer,freqMul,freqAdd] Nothing 1 (Special 0) NoId
+
+-- | Plays FFT data to a memory buffer
+--
+--  PV_BinBufRd [KR] buffer=0.0 playbuf=0.0 point=1.0 binStart=0.0 binSkip=1.0 numBins=1.0 clear=0.0
+pv_BinBufRd :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+pv_BinBufRd buffer playbuf_ point binStart binSkip numBins clear = mkUGen Nothing [KR] (Left KR) "PV_BinBufRd" [buffer,playbuf_,point,binStart,binSkip,numBins,clear] Nothing 1 (Special 0) NoId
+
+-- | Delay and Feedback on a bin by bin basis.
+--
+--  PV_BinDelay [KR] buffer=0.0 maxdelay=0.0 delaybuf=0.0 fbbuf=0.0 hop=0.5
+pv_BinDelay :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+pv_BinDelay buffer maxdelay delaybuf fbbuf hop = mkUGen Nothing [KR] (Left KR) "PV_BinDelay" [buffer,maxdelay,delaybuf,fbbuf,hop] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  PV_BinFilter [KR] buffer=0.0 start=0.0 end=0.0
+pv_BinFilter :: UGen -> UGen -> UGen -> UGen
+pv_BinFilter buffer start end = mkUGen Nothing [KR] (Left KR) "PV_BinFilter" [buffer,start,end] Nothing 1 (Special 0) NoId
+
+-- | Plays FFT data to a memory buffer
+--
+--  PV_BinPlayBuf [KR] buffer=0.0 playbuf=0.0 rate=1.0 offset=0.0 binStart=0.0 binSkip=1.0 numBins=1.0 loop=0.0 clear=0.0
+pv_BinPlayBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+pv_BinPlayBuf buffer playbuf_ rate_ offset binStart binSkip numBins loop clear = mkUGen Nothing [KR] (Left KR) "PV_BinPlayBuf" [buffer,playbuf_,rate_,offset,binStart,binSkip,numBins,loop,clear] Nothing 1 (Special 0) NoId
+
+-- | Plays FFT data from a memory buffer
+--
+--  PV_BufRd [KR] buffer=0.0 playbuf=0.0 point=1.0
+pv_BufRd :: UGen -> UGen -> UGen -> UGen
+pv_BufRd buffer playbuf_ point = mkUGen Nothing [KR] (Left KR) "PV_BufRd" [buffer,playbuf_,point] Nothing 1 (Special 0) NoId
+
+-- | returns common magnitudes
+--
+--  PV_CommonMag [KR] bufferA=0.0 bufferB=0.0 tolerance=0.0 remove=0.0
+pv_CommonMag :: UGen -> UGen -> UGen -> UGen -> UGen
+pv_CommonMag bufferA bufferB tolerance remove = mkUGen Nothing [KR] (Left KR) "PV_CommonMag" [bufferA,bufferB,tolerance,remove] Nothing 1 (Special 0) NoId
+
+-- | multiplies common magnitudes
+--
+--  PV_CommonMul [KR] bufferA=0.0 bufferB=0.0 tolerance=0.0 remove=0.0
+pv_CommonMul :: UGen -> UGen -> UGen -> UGen -> UGen
+pv_CommonMul bufferA bufferB tolerance remove = mkUGen Nothing [KR] (Left KR) "PV_CommonMul" [bufferA,bufferB,tolerance,remove] Nothing 1 (Special 0) NoId
+
+-- | simple spectral compression/expansion
+--
+--  PV_Compander [KR] buffer=0.0 thresh=50.0 slopeBelow=1.0 slopeAbove=1.0
+pv_Compander :: UGen -> UGen -> UGen -> UGen -> UGen
+pv_Compander buffer thresh slopeBelow slopeAbove = mkUGen Nothing [KR] (Left KR) "PV_Compander" [buffer,thresh,slopeBelow,slopeAbove] Nothing 1 (Special 0) NoId
+
+-- | zero bins with interpolation
+--
+--  PV_Cutoff [KR] bufferA=0.0 bufferB=0.0 wipe=0.0
+pv_Cutoff :: UGen -> UGen -> UGen -> UGen
+pv_Cutoff bufferA bufferB wipe = mkUGen Nothing [KR] (Left KR) "PV_Cutoff" [bufferA,bufferB,wipe] Nothing 1 (Special 0) NoId
+
+-- | Return the even numbered bins in an FFT buffer
+--
+--  PV_EvenBin [KR] buffer=0.0
+pv_EvenBin :: UGen -> UGen
+pv_EvenBin buffer = mkUGen Nothing [KR] (Left KR) "PV_EvenBin" [buffer] Nothing 1 (Special 0) NoId
+
+-- | extract a repeating loop out from audio
+--
+--  PV_ExtractRepeat [KR] buffer=0.0 loopbuf=0.0 loopdur=0.0 memorytime=30.0 which=0.0 ffthop=0.5 thresh=1.0
+pv_ExtractRepeat :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+pv_ExtractRepeat buffer loopbuf_ loopdur memorytime which ffthop thresh = mkUGen Nothing [KR] (Left KR) "PV_ExtractRepeat" [buffer,loopbuf_,loopdur,memorytime,which,ffthop,thresh] Nothing 1 (Special 0) NoId
+
+-- | Freeze FFT frames
+--
+--  PV_Freeze [KR] buffer=0.0 freeze=0.0
+pv_Freeze :: UGen -> UGen -> UGen
+pv_Freeze buffer freeze = mkUGen Nothing [KR] (Left KR) "PV_Freeze" [buffer,freeze] Nothing 1 (Special 0) NoId
+
+-- | Store FFT data in another buffer for other use
+--
+--  PV_FreqBuffer [KR] buffer=0.0 databuffer=0.0
+pv_FreqBuffer :: UGen -> UGen -> UGen
+pv_FreqBuffer buffer databuffer = mkUGen Nothing [KR] (Left KR) "PV_FreqBuffer" [buffer,databuffer] Nothing 1 (Special 0) NoId
+
+-- | Invert FFT frames
+--
+--  PV_Invert [KR] buffer=0.0
+pv_Invert :: UGen -> UGen
+pv_Invert buffer = mkUGen Nothing [KR] (Left KR) "PV_Invert" [buffer] Nothing 1 (Special 0) NoId
+
+-- | Store FFT data in another buffer for other use
+--
+--  PV_MagBuffer [KR] buffer=0.0 databuffer=0.0
+pv_MagBuffer :: UGen -> UGen -> UGen
+pv_MagBuffer buffer databuffer = mkUGen Nothing [KR] (Left KR) "PV_MagBuffer" [buffer,databuffer] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  PV_MagExp [KR] buffer=0.0
+pv_MagExp :: UGen -> UGen
+pv_MagExp buffer = mkUGen Nothing [KR] (Left KR) "PV_MagExp" [buffer] Nothing 1 (Special 0) NoId
+
+-- | reduces magnitudes above or below thresh
+--
+--  PV_MagGate [KR] buffer=0.0 thresh=1.0 remove=0.0
+pv_MagGate :: UGen -> UGen -> UGen -> UGen
+pv_MagGate buffer thresh remove = mkUGen Nothing [KR] (Left KR) "PV_MagGate" [buffer,thresh,remove] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  PV_MagLog [KR] buffer=0.0
+pv_MagLog :: UGen -> UGen
+pv_MagLog buffer = mkUGen Nothing [KR] (Left KR) "PV_MagLog" [buffer] Nothing 1 (Special 0) NoId
+
+-- | Remap magnitudes to a new mag curve
+--
+--  PV_MagMap [KR] buffer=0.0 mapbuf=0.0
+pv_MagMap :: UGen -> UGen -> UGen
+pv_MagMap buffer mapbuf = mkUGen Nothing [KR] (Left KR) "PV_MagMap" [buffer,mapbuf] Nothing 1 (Special 0) NoId
+
+-- | subtract spectral energy
+--
+--  PV_MagMinus [KR] bufferA=0.0 bufferB=0.0 remove=1.0
+pv_MagMinus :: UGen -> UGen -> UGen -> UGen
+pv_MagMinus bufferA bufferB remove = mkUGen Nothing [KR] (Left KR) "PV_MagMinus" [bufferA,bufferB,remove] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  PV_MagMulAdd [KR] buffer=0.0
+pv_MagMulAdd :: UGen -> UGen
+pv_MagMulAdd buffer = mkUGen Nothing [KR] (Left KR) "PV_MagMulAdd" [buffer] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  PV_MagScale [KR] bufferA=0.0 bufferB=0.0
+pv_MagScale :: UGen -> UGen -> UGen
+pv_MagScale bufferA bufferB = mkUGen Nothing [KR] (Left KR) "PV_MagScale" [bufferA,bufferB] Nothing 1 (Special 0) NoId
+
+-- | Smooth spectral magnitudes over time
+--
+--  PV_MagSmooth [KR] buffer=0.0 factor=0.1
+pv_MagSmooth :: UGen -> UGen -> UGen
+pv_MagSmooth buffer factor = mkUGen Nothing [KR] (Left KR) "PV_MagSmooth" [buffer,factor] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  PV_MagSubtract [KR] bufferA=0.0 bufferB=0.0 zerolimit=0.0
+pv_MagSubtract :: UGen -> UGen -> UGen -> UGen
+pv_MagSubtract bufferA bufferB zerolimit = mkUGen Nothing [KR] (Left KR) "PV_MagSubtract" [bufferA,bufferB,zerolimit] Nothing 1 (Special 0) NoId
+
+-- | Return the N strongest bins
+--
+--  PV_MaxMagN [KR] buffer=0.0 numbins=0.0
+pv_MaxMagN :: UGen -> UGen -> UGen
+pv_MaxMagN buffer numbins = mkUGen Nothing [KR] (Left KR) "PV_MaxMagN" [buffer,numbins] Nothing 1 (Special 0) NoId
+
+-- | Return the N weakest bins
+--
+--  PV_MinMagN [KR] buffer=0.0 numbins=0.0
+pv_MinMagN :: UGen -> UGen -> UGen
+pv_MinMagN buffer numbins = mkUGen Nothing [KR] (Left KR) "PV_MinMagN" [buffer,numbins] Nothing 1 (Special 0) NoId
+
+-- | one kind of spectral morphing
+--
+--  PV_Morph [KR] bufferA=0.0 bufferB=0.0 morph=0.0
+pv_Morph :: UGen -> UGen -> UGen -> UGen
+pv_Morph bufferA bufferB morph = mkUGen Nothing [KR] (Left KR) "PV_Morph" [bufferA,bufferB,morph] Nothing 1 (Special 0) NoId
+
+-- | Return only bins that are unstable
+--
+--  PV_NoiseSynthF [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0
+pv_NoiseSynthF :: UGen -> UGen -> UGen -> UGen -> UGen
+pv_NoiseSynthF buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_NoiseSynthF" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId
+
+-- | Return only bins that are unstable
+--
+--  PV_NoiseSynthP [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0
+pv_NoiseSynthP :: UGen -> UGen -> UGen -> UGen -> UGen
+pv_NoiseSynthP buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_NoiseSynthP" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId
+
+-- | Return the odd numbered bins in an FFT buffer
+--
+--  PV_OddBin [KR] buffer=0.0
+pv_OddBin :: UGen -> UGen
+pv_OddBin buffer = mkUGen Nothing [KR] (Left KR) "PV_OddBin" [buffer] Nothing 1 (Special 0) NoId
+
+-- | Return only bins that are stable
+--
+--  PV_PartialSynthF [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0
+pv_PartialSynthF :: UGen -> UGen -> UGen -> UGen -> UGen
+pv_PartialSynthF buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_PartialSynthF" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId
+
+-- | Return only bins that are stable
+--
+--  PV_PartialSynthP [KR] buffer=0.0 threshold=0.1 numFrames=2.0 initflag=0.0
+pv_PartialSynthP :: UGen -> UGen -> UGen -> UGen -> UGen
+pv_PartialSynthP buffer threshold numFrames initflag = mkUGen Nothing [KR] (Left KR) "PV_PartialSynthP" [buffer,threshold,numFrames,initflag] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  PV_PitchShift [KR] buffer=0.0 ratio=0.0
+pv_PitchShift :: UGen -> UGen -> UGen
+pv_PitchShift buffer ratio = mkUGen Nothing [KR] (Left KR) "PV_PitchShift" [buffer,ratio] Nothing 1 (Special 0) NoId
+
+-- | Plays FFT data to a memory buffer
+--
+--  PV_PlayBuf [KR] buffer=0.0 playbuf=0.0 rate=1.0 offset=0.0 loop=0.0
+pv_PlayBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+pv_PlayBuf buffer playbuf_ rate_ offset loop = mkUGen Nothing [KR] (Left KR) "PV_PlayBuf" [buffer,playbuf_,rate_,offset,loop] Nothing 1 (Special 0) NoId
+
+-- | Records FFT data to a memory buffer
+--
+--  PV_RecordBuf [KR] buffer=0.0 recbuf=0.0 offset=0.0 run=0.0 loop=0.0 hop=0.5 wintype=0.0
+pv_RecordBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+pv_RecordBuf buffer recbuf offset run loop hop wintype = mkUGen Nothing [KR] (Left KR) "PV_RecordBuf" [buffer,recbuf,offset,run,loop,hop,wintype] Nothing 1 (Special 0) NoId
+
+-- | combine low and high bins from two inputs with interpolation
+--
+--  PV_SoftWipe [KR] bufferA=0.0 bufferB=0.0 wipe=0.0
+pv_SoftWipe :: UGen -> UGen -> UGen -> UGen
+pv_SoftWipe bufferA bufferB wipe = mkUGen Nothing [KR] (Left KR) "PV_SoftWipe" [bufferA,bufferB,wipe] Nothing 1 (Special 0) NoId
+
+-- | A harmonic enhancer
+--
+--  PV_SpectralEnhance [KR] buffer=0.0 numPartials=8.0 ratio=2.0 strength=0.1
+pv_SpectralEnhance :: UGen -> UGen -> UGen -> UGen -> UGen
+pv_SpectralEnhance buffer numPartials ratio strength = mkUGen Nothing [KR] (Left KR) "PV_SpectralEnhance" [buffer,numPartials,ratio,strength] Nothing 1 (Special 0) NoId
+
+-- | Maps the spectral envelope of one FFT process onto another
+--
+--  PV_SpectralMap [KR] buffer=0.0 specBuffer=0.0 floor=0.0 freeze=0.0 mode=0.0 norm=0.0 window=0.0
+pv_SpectralMap :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+pv_SpectralMap buffer specBuffer floor_ freeze mode norm window = mkUGen Nothing [KR] (Left KR) "PV_SpectralMap" [buffer,specBuffer,floor_,freeze,mode,norm,window] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  PV_Whiten [KR] chain=0.0 trackbufnum=0.0 relaxtime=2.0 floor=0.1 smear=0.0 bindownsample=0.0
+pv_Whiten :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+pv_Whiten chain trackbufnum relaxtime floor_ smear bindownsample = mkUGen Nothing [KR] (Left KR) "PV_Whiten" [chain,trackbufnum,relaxtime,floor_,smear,bindownsample] Nothing 1 (Special 0) NoId
+
+-- | one kind of spectral morphing
+--
+--  PV_XFade [KR] bufferA=0.0 bufferB=0.0 fade=0.0
+pv_xFade :: UGen -> UGen -> UGen -> UGen
+pv_xFade bufferA bufferB fade = mkUGen Nothing [KR] (Left KR) "PV_XFade" [bufferA,bufferB,fade] Nothing 1 (Special 0) NoId
+
+-- | Equal power pan across an array of speakers
+--
+--  PanX [KR,AR] numChans=0.0 in=0.0 pos=0.0 level=1.0 width=2.0
+panX :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+panX rate numChans in_ pos level width = mkUGen Nothing [KR,AR] (Left rate) "PanX" [numChans,in_,pos,level,width] Nothing 0 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  PanX2D [KR,AR] numChansX=0.0 numChansY=0.0 in=0.0 posX=0.0 posY=0.0 level=1.0 widthX=2.0 widthY=2.0
+panX2D :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+panX2D rate numChansX numChansY in_ posX posY level widthX widthY = mkUGen Nothing [KR,AR] (Left rate) "PanX2D" [numChansX,numChansY,in_,posX,posY,level,widthX,widthY] Nothing 0 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  PeakEQ2 [AR] in=0.0 freq=1200.0 rs=1.0 db=0.0
+peakEQ2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+peakEQ2 rate in_ freq rs db = mkUGen Nothing [AR] (Left rate) "PeakEQ2" [in_,freq,rs,db] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  PeakEQ4 [AR] in=0.0 freq=1200.0 rs=1.0 db=0.0
+peakEQ4 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+peakEQ4 rate in_ freq rs db = mkUGen Nothing [AR] (Left rate) "PeakEQ4" [in_,freq,rs,db] Nothing 1 (Special 0) NoId
+
+-- | 3D Perlin Noise
+--
+--  Perlin3 [KR,AR] x=0.0 y=0.0 z=0.0
+perlin3 :: Rate -> UGen -> UGen -> UGen -> UGen
+perlin3 rate x y z = mkUGen Nothing [KR,AR] (Left rate) "Perlin3" [x,y,z] Nothing 1 (Special 0) NoId
+
+-- | Sample permutation UGen.
+--
+--  PermMod [AR] in=0.0 freq=100.0
+permMod :: Rate -> UGen -> UGen -> UGen
+permMod rate in_ freq = mkUGen Nothing [AR] (Left rate) "PermMod" [in_,freq] Nothing 1 (Special 0) NoId
+
+-- | Sample permutation UGen with programmable pattern.
+--
+--  PermModArray [AR] in=0.0 freq=50.0 pattern=0.0
+permModArray :: Rate -> UGen -> UGen -> UGen -> UGen
+permModArray rate in_ freq pattern = mkUGen Nothing [AR] (Left rate) "PermModArray" [in_,freq,pattern] Nothing 1 (Special 0) NoId
+
+-- | Sample permutation UGen with tail.
+--
+--  PermModT [AR] in=0.0 outfreq=440.0 infreq=5000.0
+permModT :: Rate -> UGen -> UGen -> UGen -> UGen
+permModT rate in_ outfreq infreq = mkUGen Nothing [AR] (Left rate) "PermModT" [in_,outfreq,infreq] Nothing 1 (Special 0) NoId
+
+-- | A plugin...
+--
+--  PhasorModal [AR] input=0.0 freq=100.0 decay=0.25 damp=1.0 amp=0.5 phase=0.0;    FILTER: TRUE
+phasorModal :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+phasorModal input freq decay_ damp amp phase = mkUGen Nothing [AR] (Right [0]) "PhasorModal" [input,freq,decay_,damp,amp,phase] Nothing 1 (Special 0) NoId
+
+-- | Tree classifier using (hyper)planes – UGen or language-side
+--
+--  PlaneTree [KR] treebuf=0.0 in=0.0 gate=1.0
+planeTree :: Rate -> UGen -> UGen -> UGen -> UGen
+planeTree rate treebuf in_ gate_ = mkUGen Nothing [KR] (Left rate) "PlaneTree" [treebuf,in_,gate_] Nothing 1 (Special 0) NoId
+
+-- | Plucked physical model by Fredrik Eckerholm.
+--
+--  PluckSynth [AR] freq=440.0 amp=1.0 gate=1.0 pos=0.0 c1=0.25 c3=5.0 release=0.1 f=0.0 m=0.0 k=0.0 r=0.0 l=0.65 ra=1.0e-3 rho=7850.0
+pluckSynth :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+pluckSynth rate freq amp gate_ pos c1 c3 release f m k r l ra rho = mkUGen Nothing [AR] (Left rate) "PluckSynth" [freq,amp,gate_,pos,c1,c3,release,f,m,k,r,l,ra,rho] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  PosRatio [AR] in=0.0 period=100.0 thresh=0.1
+posRatio :: Rate -> UGen -> UGen -> UGen -> UGen
+posRatio rate in_ period thresh = mkUGen Nothing [AR] (Left rate) "PosRatio" [in_,period,thresh] Nothing 1 (Special 0) NoId
+
+-- | debug assistance
+--
+--  PrintVal [KR] in=0.0 numblocks=100.0 id=0.0
+printVal :: Rate -> UGen -> UGen -> UGen -> UGen
+printVal rate in_ numblocks id_ = mkUGen Nothing [KR] (Left rate) "PrintVal" [in_,numblocks,id_] Nothing 1 (Special 0) NoId
+
+-- | constant Q transform pitch follower
+--
+--  Qitch [KR] in=0.0 databufnum=0.0 ampThreshold=1.0e-2 algoflag=1.0 ampbufnum=0.0 minfreq=0.0 maxfreq=2500.0
+qitch :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+qitch rate in_ databufnum ampThreshold algoflag ampbufnum minfreq maxfreq = mkUGen Nothing [KR] (Left rate) "Qitch" [in_,databufnum,ampThreshold,algoflag,ampbufnum,minfreq,maxfreq] Nothing 2 (Special 0) NoId
+
+-- | TB303 Filter Emulation
+--
+--  RLPFD [KR,AR] in=0.0 ffreq=440.0 res=0.0 dist=0.0;    FILTER: TRUE
+rlpfd :: UGen -> UGen -> UGen -> UGen -> UGen
+rlpfd in_ ffreq res dist = mkUGen Nothing [KR,AR] (Right [0]) "RLPFD" [in_,ffreq,res,dist] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  RMAFoodChainL [AR] freq=22050.0 a1=5.0 b1=3.0 d1=0.4 a2=0.1 b2=2.0 d2=1.0e-2 k=1.0943 r=0.8904 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0
+rmaFoodChainL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+rmaFoodChainL rate freq a1 b1 d1 a2 b2 d2 k r h xi yi zi = mkUGen Nothing [AR] (Left rate) "RMAFoodChainL" [freq,a1,b1,d1,a2,b2,d2,k,r,h,xi,yi,zi] Nothing 3 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  RMEQ [AR] in=0.0 freq=440.0 rq=0.1 k=0.0
+rmeq :: UGen -> UGen -> UGen -> UGen -> UGen
+rmeq in_ freq rq k = mkUGen Nothing [AR] (Right [0]) "RMEQ" [in_,freq,rq,k] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  RMEQSuite [] maxSize=0.0
+rmeqSuite :: Rate -> UGen -> UGen
+rmeqSuite rate maxSize = mkUGen Nothing [IR,KR,AR,DR] (Left rate) "RMEQSuite" [maxSize] Nothing 1 (Special 0) NoId
+
+-- | root mean square
+--
+--  RMS [KR,AR] in=0.0 lpFreq=10.0
+rms :: Rate -> UGen -> UGen -> UGen
+rms rate in_ lpFreq = mkUGen Nothing [KR,AR] (Left rate) "RMS" [in_,lpFreq] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  RMShelf [AR] in=0.0 freq=440.0 k=0.0
+rmShelf :: Rate -> UGen -> UGen -> UGen -> UGen
+rmShelf rate in_ freq k = mkUGen Nothing [AR] (Left rate) "RMShelf" [in_,freq,k] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  RMShelf2 [AR] in=0.0 freq=440.0 k=0.0
+rmShelf2 :: Rate -> UGen -> UGen -> UGen -> UGen
+rmShelf2 rate in_ freq k = mkUGen Nothing [AR] (Left rate) "RMShelf2" [in_,freq,k] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  RegaliaMitraEQ [AR] in=0.0 freq=440.0 rq=0.1 k=0.0
+regaliaMitraEQ :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+regaliaMitraEQ rate in_ freq rq k = mkUGen Nothing [AR] (Left rate) "RegaliaMitraEQ" [in_,freq,rq,k] Nothing 1 (Special 0) NoId
+
+-- | A resonant body simulation.
+--
+--  Resonator [AR] input=0.0 freq=100.0 position=1.0e-3 resolution=24.0 structure=0.5 brightness=0.5 damping=0.5;    FILTER: TRUE
+resonator :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+resonator input freq position resolution structure brightness damping = mkUGen Nothing [AR] (Right [0]) "Resonator" [input,freq,position,resolution,structure,brightness,damping] Nothing 1 (Special 0) NoId
+
+-- | A modal synthesis voice
+--
+--  Rongs [AR] trigger=0.0 sustain=1.0 f0=1.0e-2 structure=0.5 brightness=0.5 damping=0.75 accent=0.9 stretch=0.5 position=0.15 loss=0.15
+rongs :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+rongs rate trigger sustain f0 structure brightness damping accent stretch position loss = mkUGen Nothing [AR] (Left rate) "Rongs" [trigger,sustain,f0,structure,brightness,damping,accent,stretch,position,loss] Nothing 1 (Special 0) NoId
+
+-- | Rossler chaotic generator
+--
+--  RosslerL [AR] freq=22050.0 a=0.2 b=0.2 c=5.7 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0
+rosslerL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+rosslerL rate freq a b c h xi yi zi = mkUGen Nothing [AR] (Left rate) "RosslerL" [freq,a,b,c,h,xi,yi,zi] Nothing 3 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  RosslerResL [AR] in=0.0 stiff=1.0 freq=22050.0 a=0.2 b=0.2 c=5.7 h=5.0e-2 xi=0.1 yi=0.0 zi=0.0
+rosslerResL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+rosslerResL rate in_ stiff freq a b c h xi yi zi = mkUGen Nothing [AR] (Left rate) "RosslerResL" [in_,stiff,freq,a,b,c,h,xi,yi,zi] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  Rotate [AR] w=0.0 x=0.0 y=0.0 z=0.0 rotate=0.0
+rotate :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+rotate rate w x y z rotate_ = mkUGen Nothing [AR] (Left rate) "Rotate" [w,x,y,z,rotate_] Nothing 1 (Special 0) NoId
+
+-- | experimental time domain onset detector
+--
+--  SLOnset [KR] input=0.0 memorysize1=20.0 before=5.0 after=5.0 threshold=10.0 hysteresis=10.0
+slOnset :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+slOnset rate input memorysize1 before after threshold hysteresis = mkUGen Nothing [KR] (Left rate) "SLOnset" [input,memorysize1,before,after,threshold,hysteresis] Nothing 1 (Special 0) NoId
+
+-- | Spectral Modeling Synthesis
+--
+--  SMS [AR] input=0.0 maxpeaks=80.0 currentpeaks=80.0 tolerance=4.0 noisefloor=0.2 freqmult=1.0 freqadd=0.0 formantpreserve=0.0 useifft=0.0 ampmult=1.0 graphicsbufnum=0.0;    FILTER: TRUE
+sms :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+sms input maxpeaks currentpeaks tolerance noisefloor freqmult freqadd formantpreserve useifft ampmult graphicsbufnum = mkUGen Nothing [AR] (Right [0]) "SMS" [input,maxpeaks,currentpeaks,tolerance,noisefloor,freqmult,freqadd,formantpreserve,useifft,ampmult,graphicsbufnum] Nothing 2 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  SOMAreaWr [KR] bufnum=0.0 inputdata=0.0 coords=0.0 netsize=10.0 numdims=2.0 nhood=0.5 gate=1.0
+somAreaWr :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+somAreaWr rate bufnum inputdata coords netsize numdims nhood gate_ = mkUGen Nothing [KR] (Left rate) "SOMAreaWr" [bufnum,inputdata,coords,netsize,numdims,nhood,gate_] Nothing 1 (Special 0) NoId
+
+-- | Map an input using a Self-Organising Map
+--
+--  SOMRd [KR,AR] bufnum=0.0 inputdata=0.0 netsize=10.0 numdims=2.0 gate=1.0
+somRd :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+somRd rate bufnum inputdata netsize numdims gate_ = mkUGen Nothing [KR,AR] (Left rate) "SOMRd" [bufnum,inputdata,netsize,numdims,gate_] Nothing 2 (Special 0) NoId
+
+-- | Create (train) a Self-Organising Map
+--
+--  SOMTrain [KR] bufnum=0.0 inputdata=0.0 netsize=10.0 numdims=2.0 traindur=5000.0 nhood=0.5 gate=1.0 initweight=1.0
+somTrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+somTrain rate bufnum inputdata netsize numdims traindur nhood gate_ initweight = mkUGen Nothing [KR] (Left rate) "SOMTrain" [bufnum,inputdata,netsize,numdims,traindur,nhood,gate_,initweight] Nothing 3 (Special 0) NoId
+
+-- | 12db/Oct State Variable Filter
+--
+--  SVF [KR,AR] signal=0.0 cutoff=2200.0 res=0.1 lowpass=1.0 bandpass=0.0 highpass=0.0 notch=0.0 peak=0.0;    FILTER: TRUE
+svf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+svf signal cutoff res lowpass bandpass highpass notch peak_ = mkUGen Nothing [KR,AR] (Right [0]) "SVF" [signal,cutoff,res,lowpass,bandpass,highpass,notch,peak_] Nothing 1 (Special 0) NoId
+
+-- | super-efficient sawtooth oscillator with low aliasing
+--
+--  SawDPW [KR,AR] freq=440.0 iphase=0.0
+sawDPW :: Rate -> UGen -> UGen -> UGen
+sawDPW rate freq iphase = mkUGen Nothing [KR,AR] (Left rate) "SawDPW" [freq,iphase] Nothing 1 (Special 0) NoId
+
+-- | Perceptual feature modeling sensory dissonance
+--
+--  SensoryDissonance [KR] fft=0.0 maxpeaks=100.0 peakthreshold=0.1 norm=0.0 clamp=1.0
+sensoryDissonance :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+sensoryDissonance rate fft_ maxpeaks peakthreshold norm clamp = mkUGen Nothing [KR] (Left rate) "SensoryDissonance" [fft_,maxpeaks,peakthreshold,norm,clamp] Nothing 1 (Special 0) NoId
+
+-- | Fuzzy sieve based synthesis
+--
+--  Sieve1 [KR,AR] bufnum=0.0 gap=2.0 alternate=1.0
+sieve1 :: Rate -> UGen -> UGen -> UGen -> UGen
+sieve1 rate bufnum gap alternate = mkUGen Nothing [KR,AR] (Left rate) "Sieve1" [bufnum,gap,alternate] Nothing 1 (Special 0) NoId
+
+-- | Granular synthesis with sinusoidal grains
+--
+--  SinGrain [AR] trigger=0.0 dur=1.0 freq=440.0
+sinGrain :: Rate -> UGen -> UGen -> UGen -> UGen
+sinGrain rate trigger dur freq = mkUGen Nothing [AR] (Left rate) "SinGrain" [trigger,dur,freq] Nothing 1 (Special 0) NoId
+
+-- | Granular synthesis with sinusoidal grains and user supplied envelope
+--
+--  SinGrainB [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf=0.0
+sinGrainB :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+sinGrainB rate trigger dur freq envbuf = mkUGen Nothing [AR] (Left rate) "SinGrainB" [trigger,dur,freq,envbuf] Nothing 1 (Special 0) NoId
+
+-- | Granular synthesis with sinusoidal grains with Ambisonic panning and user supplied envelope
+--
+--  SinGrainBBF [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf=0.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
+sinGrainBBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+sinGrainBBF rate trigger dur freq envbuf azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "SinGrainBBF" [trigger,dur,freq,envbuf,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
+
+-- | Granular synthesis with sinusoidal grains with Ambisonic panning
+--
+--  SinGrainBF [AR] trigger=0.0 dur=1.0 freq=440.0 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
+sinGrainBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+sinGrainBF rate trigger dur freq azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "SinGrainBF" [trigger,dur,freq,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
+
+-- | Granular synthesis with sinusoidal grains and user supplied envelopes
+--
+--  SinGrainI [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5
+sinGrainI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+sinGrainI rate trigger dur freq envbuf1 envbuf2 ifac = mkUGen Nothing [AR] (Left rate) "SinGrainI" [trigger,dur,freq,envbuf1,envbuf2,ifac] Nothing 1 (Special 0) NoId
+
+-- | Granular synthesis with sinusoidal grains with Ambisonic panning and user supplied envelopes
+--
+--  SinGrainIBF [AR] trigger=0.0 dur=1.0 freq=440.0 envbuf1=0.0 envbuf2=0.0 ifac=0.5 azimuth=0.0 elevation=0.0 rho=1.0 wComp=0.0
+sinGrainIBF :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+sinGrainIBF rate trigger dur freq envbuf1 envbuf2 ifac azimuth elevation rho wComp = mkUGen Nothing [AR] (Left rate) "SinGrainIBF" [trigger,dur,freq,envbuf1,envbuf2,ifac,azimuth,elevation,rho,wComp] Nothing 4 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  SinTone [AR] freq=440.0 phase=0.0
+sinTone :: Rate -> UGen -> UGen -> UGen
+sinTone rate freq phase = mkUGen Nothing [AR] (Left rate) "SinTone" [freq,phase] Nothing 1 (Special 0) NoId
+
+-- | port of some ladspa plugins
+--
+--  SineShaper [AR] in=0.0 limit=1.0;    FILTER: TRUE
+sineShaper :: UGen -> UGen -> UGen
+sineShaper in_ limit = mkUGen Nothing [AR] (Right [0]) "SineShaper" [in_,limit] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  SkipNeedle [AR] range=44100.0 rate=10.0 offset=0.0
+skipNeedle :: Rate -> UGen -> UGen -> UGen -> UGen
+skipNeedle rate range rate_ offset = mkUGen Nothing [AR] (Left rate) "SkipNeedle" [range,rate_,offset] Nothing 1 (Special 0) NoId
+
+-- | Smooth samplerate and bitrate reduction
+--
+--  SmoothDecimator [AR] in=0.0 rate=44100.0 smoothing=0.5
+smoothDecimator :: Rate -> UGen -> UGen -> UGen -> UGen
+smoothDecimator rate in_ rate_ smoothing = mkUGen Nothing [AR] (Left rate) "SmoothDecimator" [in_,rate_,smoothing] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  SoftClipAmp [AR] in=0.0 pregain=1.0;    FILTER: TRUE
+softClipAmp :: UGen -> UGen -> UGen
+softClipAmp in_ pregain = mkUGen Nothing [AR] (Right [0]) "SoftClipAmp" [in_,pregain] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  SoftClipAmp4 [AR] in=0.0 pregain=1.0;    FILTER: TRUE
+softClipAmp4 :: UGen -> UGen -> UGen
+softClipAmp4 in_ pregain = mkUGen Nothing [AR] (Right [0]) "SoftClipAmp4" [in_,pregain] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  SoftClipAmp8 [AR] in=0.0 pregain=1.0;    FILTER: TRUE
+softClipAmp8 :: UGen -> UGen -> UGen
+softClipAmp8 in_ pregain = mkUGen Nothing [AR] (Right [0]) "SoftClipAmp8" [in_,pregain] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  SoftClipper4 [AR] in=0.0
+softClipper4 :: Rate -> UGen -> UGen
+softClipper4 rate in_ = mkUGen Nothing [AR] (Left rate) "SoftClipper4" [in_] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  SoftClipper8 [AR] in=0.0
+softClipper8 :: Rate -> UGen -> UGen
+softClipper8 rate in_ = mkUGen Nothing [AR] (Left rate) "SoftClipper8" [in_] Nothing 1 (Special 0) NoId
+
+-- | LPC analizer.
+--
+--  SonLPC [AR] buff=-1.0 in=0.0 hop=0.5 poles=10.0
+sonLPC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+sonLPC rate buff in_ hop poles = mkUGen Nothing [AR] (Left rate) "SonLPC" [buff,in_,hop,poles] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  SonLPCSynth [AR] chain=-1.0
+sonLPCSynth :: Rate -> UGen -> UGen
+sonLPCSynth rate chain = mkUGen Nothing [AR] (Left rate) "SonLPCSynth" [chain] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  SonLPCSynthIn [AR] chain=-1.0 in=0.0
+sonLPCSynthIn :: Rate -> UGen -> UGen -> UGen
+sonLPCSynthIn rate chain in_ = mkUGen Nothing [AR] (Left rate) "SonLPCSynthIn" [chain,in_] Nothing 1 (Special 0) NoId
+
+-- | Karplus-Strong via a sorting algorithm
+--
+--  SortBuf [AR] bufnum=0.0 sortrate=10.0 reset=0.0
+sortBuf :: Rate -> UGen -> UGen -> UGen -> UGen
+sortBuf rate bufnum sortrate reset = mkUGen Nothing [AR] (Left rate) "SortBuf" [bufnum,sortrate,reset] Nothing 1 (Special 0) NoId
+
+-- | Spectral feature extraction
+--
+--  SpectralEntropy [KR] fft=0.0 fftsize=2048.0 numbands=1.0;    NC INPUT: True
+spectralEntropy :: Int -> Rate -> UGen -> UGen -> UGen -> UGen
+spectralEntropy numChannels rate fft_ fftsize numbands = mkUGen Nothing [KR] (Left rate) "SpectralEntropy" [fft_,fftsize,numbands] Nothing numChannels (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  Spreader [AR] in=0.0 theta=1.5707963267949 filtsPerOctave=8.0
+spreader :: Rate -> UGen -> UGen -> UGen -> UGen
+spreader rate in_ theta filtsPerOctave = mkUGen Nothing [AR] (Left rate) "Spreader" [in_,theta,filtsPerOctave] Nothing 2 (Special 0) NoId
+
+-- | Spruce bud worm model equations
+--
+--  SpruceBudworm [AR] reset=0.0 rate=0.1 k1=27.9 k2=1.5 alpha=0.1 beta=10.1 mu=0.3 rho=10.1 initx=0.9 inity=0.1
+spruceBudworm :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+spruceBudworm rate reset rate_ k1 k2 alpha beta mu rho initx inity = mkUGen Nothing [AR] (Left rate) "SpruceBudworm" [reset,rate_,k1,k2,alpha,beta,mu,rho,initx,inity] Nothing 2 (Special 0) NoId
+
+-- | Wave squeezer. Maybe a kind of pitch shifter.
+--
+--  Squiz [KR,AR] in=0.0 pitchratio=2.0 zcperchunk=1.0 memlen=0.1;    FILTER: TRUE
+squiz :: UGen -> UGen -> UGen -> UGen -> UGen
+squiz in_ pitchratio zcperchunk memlen = mkUGen Nothing [KR,AR] (Right [0]) "Squiz" [in_,pitchratio,zcperchunk,memlen] Nothing 1 (Special 0) NoId
+
+-- | standard map 2D chaotic generator
+--
+--  Standard2DC [KR,AR] minfreq=11025.0 maxfreq=22050.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381
+standard2DC :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+standard2DC rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Standard2DC" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | standard map 2D chaotic generator
+--
+--  Standard2DL [KR,AR] minfreq=11025.0 maxfreq=22050.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381
+standard2DL :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+standard2DL rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Standard2DL" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | standard map 2D chaotic generator
+--
+--  Standard2DN [KR,AR] minfreq=11025.0 maxfreq=22050.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381
+standard2DN :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+standard2DN rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "Standard2DN" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StandardTrig [KR,AR] minfreq=5.0 maxfreq=10.0 k=1.4 x0=4.9789799812499 y0=5.7473416156381
+standardTrig :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+standardTrig rate minfreq maxfreq k x0 y0 = mkUGen Nothing [KR,AR] (Left rate) "StandardTrig" [minfreq,maxfreq,k,x0,y0] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StkBandedWG [KR,AR] freq=440.0 instr=0.0 bowpressure=0.0 bowmotion=0.0 integration=0.0 modalresonance=64.0 bowvelocity=0.0 setstriking=0.0 trig=1.0
+stkBandedWG :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stkBandedWG rate freq instr bowpressure bowmotion integration modalresonance bowvelocity setstriking trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkBandedWG" [freq,instr,bowpressure,bowmotion,integration,modalresonance,bowvelocity,setstriking,trig_] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StkBeeThree [KR,AR] freq=440.0 op4gain=10.0 op3gain=20.0 lfospeed=64.0 lfodepth=0.0 adsrtarget=64.0 trig=1.0
+stkBeeThree :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stkBeeThree rate freq op4gain op3gain lfospeed lfodepth adsrtarget trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkBeeThree" [freq,op4gain,op3gain,lfospeed,lfodepth,adsrtarget,trig_] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StkBlowHole [KR,AR] freq=440.0 reedstiffness=64.0 noisegain=20.0 tonehole=64.0 register=11.0 breathpressure=64.0
+stkBlowHole :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stkBlowHole rate freq reedstiffness noisegain tonehole register breathpressure = mkUGen Nothing [KR,AR] (Left rate) "StkBlowHole" [freq,reedstiffness,noisegain,tonehole,register,breathpressure] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StkBowed [KR,AR] freq=220.0 bowpressure=64.0 bowposition=64.0 vibfreq=64.0 vibgain=64.0 loudness=64.0 gate=1.0 attackrate=1.0 decayrate=1.0
+stkBowed :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stkBowed rate freq bowpressure bowposition vibfreq vibgain loudness_ gate_ attackrate decayrate = mkUGen Nothing [KR,AR] (Left rate) "StkBowed" [freq,bowpressure,bowposition,vibfreq,vibgain,loudness_,gate_,attackrate,decayrate] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StkClarinet [KR,AR] freq=440.0 reedstiffness=64.0 noisegain=4.0 vibfreq=64.0 vibgain=11.0 breathpressure=64.0 trig=1.0
+stkClarinet :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stkClarinet rate freq reedstiffness noisegain vibfreq vibgain breathpressure trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkClarinet" [freq,reedstiffness,noisegain,vibfreq,vibgain,breathpressure,trig_] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StkFlute [KR,AR] freq=440.0 jetDelay=49.0 noisegain=0.15 jetRatio=0.32
+stkFlute :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+stkFlute rate freq jetDelay noisegain jetRatio = mkUGen Nothing [KR,AR] (Left rate) "StkFlute" [freq,jetDelay,noisegain,jetRatio] Nothing 1 (Special 0) NoId
+
+-- | Wrapping Synthesis toolkit.
+--
+--  StkGlobals [AR] showWarnings=0.0 printErrors=0.0 rawfilepath=0.0
+stkGlobals :: Rate -> UGen -> UGen -> UGen -> UGen
+stkGlobals rate showWarnings printErrors rawfilepath = mkUGen Nothing [AR] (Left rate) "StkGlobals" [showWarnings,printErrors,rawfilepath] Nothing 1 (Special 0) NoId
+
+-- | Wrapping Synthesis toolkit.
+--
+--  StkInst [AR] freq=220.0 gate=1.0 onamp=1.0 offamp=0.5 instNumber=6.0 *args=0.0;    MCE=1, REORDERS INPUTS: [4,0,1,2,3,5]
+stkInst :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stkInst rate freq gate_ onamp offamp instNumber args = mkUGen Nothing [AR] (Left rate) "StkInst" [freq,gate_,onamp,offamp,instNumber] (Just [args]) 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StkMandolin [KR,AR] freq=520.0 bodysize=64.0 pickposition=64.0 stringdamping=69.0 stringdetune=10.0 aftertouch=64.0 trig=1.0
+stkMandolin :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stkMandolin rate freq bodysize pickposition stringdamping stringdetune aftertouch trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkMandolin" [freq,bodysize,pickposition,stringdamping,stringdetune,aftertouch,trig_] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StkModalBar [KR,AR] freq=440.0 instrument=0.0 stickhardness=64.0 stickposition=64.0 vibratogain=20.0 vibratofreq=20.0 directstickmix=64.0 volume=64.0 trig=1.0
+stkModalBar :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stkModalBar rate freq instrument stickhardness stickposition vibratogain vibratofreq directstickmix volume trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkModalBar" [freq,instrument,stickhardness,stickposition,vibratogain,vibratofreq,directstickmix,volume,trig_] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StkMoog [KR,AR] freq=440.0 filterQ=10.0 sweeprate=20.0 vibfreq=64.0 vibgain=0.0 gain=64.0 trig=1.0
+stkMoog :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stkMoog rate freq filterQ sweeprate vibfreq vibgain gain trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkMoog" [freq,filterQ,sweeprate,vibfreq,vibgain,gain,trig_] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StkPluck [KR,AR] freq=440.0 decay=0.99
+stkPluck :: Rate -> UGen -> UGen -> UGen
+stkPluck rate freq decay_ = mkUGen Nothing [KR,AR] (Left rate) "StkPluck" [freq,decay_] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StkSaxofony [KR,AR] freq=220.0 reedstiffness=64.0 reedaperture=64.0 noisegain=20.0 blowposition=26.0 vibratofrequency=20.0 vibratogain=20.0 breathpressure=128.0 trig=1.0
+stkSaxofony :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stkSaxofony rate freq reedstiffness reedaperture noisegain blowposition vibratofrequency vibratogain breathpressure trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkSaxofony" [freq,reedstiffness,reedaperture,noisegain,blowposition,vibratofrequency,vibratogain,breathpressure,trig_] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StkShakers [KR,AR] instr=0.0 energy=64.0 decay=64.0 objects=64.0 resfreq=64.0
+stkShakers :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stkShakers rate instr energy decay_ objects resfreq = mkUGen Nothing [KR,AR] (Left rate) "StkShakers" [instr,energy,decay_,objects,resfreq] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  StkVoicForm [KR,AR] freq=440.0 vuvmix=64.0 vowelphon=64.0 vibfreq=64.0 vibgain=20.0 loudness=64.0 trig=1.0
+stkVoicForm :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stkVoicForm rate freq vuvmix vowelphon vibfreq vibgain loudness_ trig_ = mkUGen Nothing [KR,AR] (Left rate) "StkVoicForm" [freq,vuvmix,vowelphon,vibfreq,vibgain,loudness_,trig_] Nothing 1 (Special 0) NoId
+
+-- | String resonance filter
+--
+--  Streson [KR,AR] input=0.0 delayTime=3.0e-3 res=0.9;    FILTER: TRUE
+streson :: UGen -> UGen -> UGen -> UGen
+streson input delayTime res = mkUGen Nothing [KR,AR] (Right [0]) "Streson" [input,delayTime,res] Nothing 1 (Special 0) NoId
+
+-- | Extended Karplus-Strong
+--
+--  StringVoice [AR] trig=0.0 infsustain=0.0 freq=100.0 accent=0.5 structure=0.5 brightness=0.5 damping=0.5
+stringVoice :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stringVoice rate trig_ infsustain freq accent structure brightness damping = mkUGen Nothing [AR] (Left rate) "StringVoice" [trig_,infsustain,freq,accent,structure,brightness,damping] Nothing 1 (Special 0) NoId
+
+-- | Pulse counter with floating point steps
+--
+--  Summer [KR,AR] trig=0.0 step=1.0 reset=0.0 resetval=0.0;    FILTER: TRUE
+summer :: UGen -> UGen -> UGen -> UGen -> UGen
+summer trig_ step reset resetval = mkUGen Nothing [KR,AR] (Right [0]) "Summer" [trig_,step,reset,resetval] Nothing 1 (Special 0) NoId
+
+-- | feedback delay line implementing switch-and-ramp buffer jumping
+--
+--  SwitchDelay [AR] in=0.0 drylevel=1.0 wetlevel=1.0 delaytime=1.0 delayfactor=0.7 maxdelaytime=20.0;    FILTER: TRUE
+switchDelay :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+switchDelay in_ drylevel wetlevel delaytime delayfactor maxdelaytime = mkUGen Nothing [AR] (Right [0]) "SwitchDelay" [in_,drylevel,wetlevel,delaytime,delayfactor,maxdelaytime] Nothing 1 (Special 0) NoId
+
+-- | triggered beta random distribution
+--
+--  TBetaRand [KR,AR] lo=0.0 hi=1.0 prob1=0.0 prob2=0.0 trig=0.0;    FILTER: TRUE, NONDET
+tBetaRand :: ID a => a -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+tBetaRand z lo hi prob1 prob2 trig_ = mkUGen Nothing [KR,AR] (Right [4]) "TBetaRand" [lo,hi,prob1,prob2,trig_] Nothing 1 (Special 0) (toUId z)
+
+-- | triggered random walk generator
+--
+--  TBrownRand [KR,AR] lo=0.0 hi=1.0 dev=1.0 dist=0.0 trig=0.0;    FILTER: TRUE, NONDET
+tBrownRand :: ID a => a -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+tBrownRand z lo hi dev dist trig_ = mkUGen Nothing [KR,AR] (Right [4]) "TBrownRand" [lo,hi,dev,dist,trig_] Nothing 1 (Special 0) (toUId z)
+
+-- | triggered gaussian random distribution
+--
+--  TGaussRand [KR,AR] lo=0.0 hi=1.0 trig=0.0;    FILTER: TRUE, NONDET
+tGaussRand :: ID a => a -> UGen -> UGen -> UGen -> UGen
+tGaussRand z lo hi trig_ = mkUGen Nothing [KR,AR] (Right [2]) "TGaussRand" [lo,hi,trig_] Nothing 1 (Special 0) (toUId z)
+
+-- | buffer granulator with linear att/dec
+--
+--  TGrains2 [AR] trigger=0.0 bufnum=0.0 rate=1.0 centerPos=0.0 dur=0.1 pan=0.0 amp=0.1 att=0.5 dec=0.5 interp=4.0;    NC INPUT: True
+tGrains2 :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+tGrains2 numChannels rate trigger bufnum rate_ centerPos dur pan amp att dec interp = mkUGen Nothing [AR] (Left rate) "TGrains2" [trigger,bufnum,rate_,centerPos,dur,pan,amp,att,dec,interp] Nothing numChannels (Special 0) NoId
+
+-- | buffer granulator with user envelope
+--
+--  TGrains3 [AR] trigger=0.0 bufnum=0.0 rate=1.0 centerPos=0.0 dur=0.1 pan=0.0 amp=0.1 att=0.5 dec=0.5 window=1.0 interp=4.0;    NC INPUT: True
+tGrains3 :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+tGrains3 numChannels rate trigger bufnum rate_ centerPos dur pan amp att dec window interp = mkUGen Nothing [AR] (Left rate) "TGrains3" [trigger,bufnum,rate_,centerPos,dur,pan,amp,att,dec,window,interp] Nothing numChannels (Special 0) NoId
+
+-- | Tracking Phase Vocoder
+--
+--  TPV [AR] chain=0.0 windowsize=1024.0 hopsize=512.0 maxpeaks=80.0 currentpeaks=0.0 freqmult=1.0 tolerance=4.0 noisefloor=0.2
+tpv :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+tpv chain windowsize hopsize maxpeaks currentpeaks freqmult tolerance noisefloor = mkUGen Nothing [AR] (Left AR) "TPV" [chain,windowsize,hopsize,maxpeaks,currentpeaks,freqmult,tolerance,noisefloor] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  TTendency [KR,AR] trigger=0.0 dist=0.0 parX=0.0 parY=1.0 parA=0.0 parB=0.0
+tTendency :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+tTendency rate trigger dist parX parY parA parB = mkUGen Nothing [KR,AR] (Left rate) "TTendency" [trigger,dist,parX,parY,parA,parB] Nothing 1 (Special 0) NoId
+
+-- | pitch tracker
+--
+--  Tartini [KR] in=0.0 threshold=0.93 n=2048.0 k=0.0 overlap=1024.0 smallCutoff=0.5
+tartini :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+tartini rate in_ threshold n k overlap smallCutoff = mkUGen Nothing [KR] (Left rate) "Tartini" [in_,threshold,n,k,overlap,smallCutoff] Nothing 2 (Special 0) NoId
+
+-- | Neural Oscillator
+--
+--  TermanWang [AR] input=0.0 reset=0.0 ratex=1.0e-2 ratey=1.0e-2 alpha=1.0 beta=1.0 eta=1.0 initx=0.0 inity=0.0
+termanWang :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+termanWang rate input reset ratex ratey alpha beta eta initx inity = mkUGen Nothing [AR] (Left rate) "TermanWang" [input,reset,ratex,ratey,alpha,beta,eta,initx,inity] Nothing 1 (Special 0) NoId
+
+-- | display level of a UGen as a textual meter
+--
+--  TextVU [KR,AR] trig=2.0 in=0.0 label=0.0 width=21.0 reset=0.0 ana=0.0
+textVU :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+textVU rate trig_ in_ label_ width reset ana = mkUGen Nothing [KR,AR] (Left rate) "TextVU" [trig_,in_,label_,width,reset,ana] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  Tilt [AR] w=0.0 x=0.0 y=0.0 z=0.0 tilt=0.0
+tilt :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+tilt rate w x y z tilt_ = mkUGen Nothing [AR] (Left rate) "Tilt" [w,x,y,z,tilt_] Nothing 1 (Special 0) NoId
+
+-- | triggered signal averager
+--
+--  TrigAvg [KR] in=0.0 trig=0.0
+trigAvg :: Rate -> UGen -> UGen -> UGen
+trigAvg rate in_ trig_ = mkUGen Nothing [KR] (Left rate) "TrigAvg" [in_,trig_] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  Tumble [AR] w=0.0 x=0.0 y=0.0 z=0.0 tilt=0.0
+tumble :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+tumble rate w x y z tilt_ = mkUGen Nothing [AR] (Left rate) "Tumble" [w,x,y,z,tilt_] Nothing 1 (Special 0) NoId
+
+-- | physical modeling simulation; two tubes
+--
+--  TwoTube [AR] input=0.0 k=1.0e-2 loss=1.0 d1length=100.0 d2length=100.0
+twoTube :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+twoTube rate input k loss d1length d2length = mkUGen Nothing [AR] (Left rate) "TwoTube" [input,k,loss,d1length,d2length] Nothing 1 (Special 0) NoId
+
+-- | (Undocumented class)
+--
+--  UHJ2B [AR] ls=0.0 rs=0.0
+uhj2b :: Rate -> UGen -> UGen -> UGen
+uhj2b rate ls rs = mkUGen Nothing [AR] (Left rate) "UHJ2B" [ls,rs] Nothing 3 (Special 0) NoId
+
+-- | Vector Base Amplitude Panner
+--
+--  VBAP [KR,AR] in=0.0 bufnum=0.0 azimuth=0.0 elevation=1.0 spread=0.0;    NC INPUT: True
+vbap :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+vbap numChannels rate in_ bufnum azimuth elevation spread = mkUGen Nothing [KR,AR] (Left rate) "VBAP" [in_,bufnum,azimuth,elevation,spread] Nothing numChannels (Special 0) NoId
+
+-- | a chaotic oscillator network
+--
+--  VBFourses [AR] smoother=0.5 *freqarray=0.0;    MCE=1, REORDERS INPUTS: [1,0]
+vbFourses :: Rate -> UGen -> UGen -> UGen
+vbFourses rate smoother freqarray = mkUGen Nothing [AR] (Left rate) "VBFourses" [smoother] (Just [freqarray]) 4 (Special 0) NoId
+
+-- | artifical reverberator
+--
+--  VBJonVerb [AR] in=0.0 decay=0.6 damping=0.3 inputbw=0.8 erfl=0.5 tail=0.5;    FILTER: TRUE
+vbJonVerb :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+vbJonVerb in_ decay_ damping inputbw erfl tail_ = mkUGen Nothing [AR] (Right [0]) "VBJonVerb" [in_,decay_,damping,inputbw,erfl,tail_] Nothing 2 (Special 0) NoId
+
+-- | a simple phase vocoder for time-stretching
+--
+--  VBPVoc [AR] numChannels=0.0 bufnum=0.0 playpos=0.0 fftsize=2048.0
+vbpVoc :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+vbpVoc rate numChannels bufnum playpos fftsize = mkUGen Nothing [AR] (Left rate) "VBPVoc" [numChannels,bufnum,playpos,fftsize] Nothing 1 (Special 0) NoId
+
+-- | lowpass filter for envelope following
+--
+--  VBSlide [KR,AR] in=0.0 slideup=50.0 slidedown=3000.0;    FILTER: TRUE
+vbSlide :: UGen -> UGen -> UGen -> UGen
+vbSlide in_ slideup slidedown = mkUGen Nothing [KR,AR] (Right [0]) "VBSlide" [in_,slideup,slidedown] Nothing 1 (Special 0) NoId
+
+-- | 2D scanning pattern virtual machine
+--
+--  VMScan2D [AR] bufnum=0.0
+vmScan2D :: Rate -> UGen -> UGen
+vmScan2D rate bufnum = mkUGen Nothing [AR] (Left rate) "VMScan2D" [bufnum] Nothing 2 (Special 0) NoId
+
+-- | vosim pulse generator
+--
+--  VOSIM [AR] trig=0.1 freq=400.0 nCycles=1.0 decay=0.9
+vosim :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+vosim rate trig_ freq nCycles decay_ = mkUGen Nothing [AR] (Left rate) "VOSIM" [trig_,freq,nCycles,decay_] Nothing 1 (Special 0) NoId
+
+-- | Variable Waveshape Oscillator
+--
+--  VarShapeOsc [KR,AR] freq=100.0 pw=0.5 waveshape=0.5 sync=1.0 syncfreq=105.0
+varShapeOsc :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+varShapeOsc rate freq pw waveshape sync syncfreq = mkUGen Nothing [KR,AR] (Left rate) "VarShapeOsc" [freq,pw,waveshape,sync,syncfreq] Nothing 1 (Special 0) NoId
+
+-- | Vosim oscillator
+--
+--  VosimOsc [KR,AR] freq=100.0 form1freq=951.0 form2freq=919.0 shape=0.0
+vosimOsc :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+vosimOsc rate freq form1freq form2freq shape = mkUGen Nothing [KR,AR] (Left rate) "VosimOsc" [freq,form1freq,form2freq,shape] Nothing 1 (Special 0) NoId
+
+-- | windowed amplitude follower
+--
+--  WAmp [KR] in=0.0 winSize=0.1
+wAmp :: Rate -> UGen -> UGen -> UGen
+wAmp rate in_ winSize = mkUGen Nothing [KR] (Left rate) "WAmp" [in_,winSize] Nothing 1 (Special 0) NoId
+
+-- | decomposition into square waves, and reconstruction
+--
+--  WalshHadamard [AR] input=0.0 which=0.0
+walshHadamard :: Rate -> UGen -> UGen -> UGen
+walshHadamard rate input which = mkUGen Nothing [AR] (Left rate) "WalshHadamard" [input,which] Nothing 1 (Special 0) NoId
+
+-- | Warp a buffer with a time pointer
+--
+--  WarpZ [AR] bufnum=0.0 pointer=0.0 freqScale=1.0 windowSize=0.2 envbufnum=-1.0 overlaps=8.0 windowRandRatio=0.0 interp=1.0 zeroSearch=0.0 zeroStart=0.0;    NC INPUT: True
+warpZ :: Int -> Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+warpZ numChannels rate bufnum pointer freqScale windowSize envbufnum overlaps windowRandRatio interp zeroSearch zeroStart = mkUGen Nothing [AR] (Left rate) "WarpZ" [bufnum,pointer,freqScale,windowSize,envbufnum,overlaps,windowRandRatio,interp,zeroSearch,zeroStart] Nothing numChannels (Special 0) NoId
+
+-- | Lose bits of your waves
+--
+--  WaveLoss [KR,AR] in=0.0 drop=20.0 outof=40.0 mode=1.0
+waveLoss :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+waveLoss rate in_ drop_ outof mode = mkUGen Nothing [KR,AR] (Left rate) "WaveLoss" [in_,drop_,outof,mode] Nothing 1 (Special 0) NoId
+
+-- | wave terrain synthesis
+--
+--  WaveTerrain [AR] bufnum=0.0 x=0.0 y=0.0 xsize=100.0 ysize=100.0
+waveTerrain :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+waveTerrain rate bufnum x y xsize ysize = mkUGen Nothing [AR] (Left rate) "WaveTerrain" [bufnum,x,y,xsize,ysize] Nothing 1 (Special 0) NoId
+
+-- | decomposition into Daub4 wavelets, and reconstruction
+--
+--  WaveletDaub [AR] input=0.0 n=64.0 which=0.0
+waveletDaub :: Rate -> UGen -> UGen -> UGen -> UGen
+waveletDaub rate input n which = mkUGen Nothing [AR] (Left rate) "WaveletDaub" [input,n,which] Nothing 1 (Special 0) NoId
+
+-- | Weakly Nonlinear Oscillator
+--
+--  WeaklyNonlinear [AR] input=0.0 reset=0.0 ratex=1.0 ratey=1.0 freq=440.0 initx=0.0 inity=0.0 alpha=0.0 xexponent=0.0 beta=0.0 yexponent=0.0
+weaklyNonlinear :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+weaklyNonlinear rate input reset ratex ratey freq initx inity alpha xexponent beta yexponent = mkUGen Nothing [AR] (Left rate) "WeaklyNonlinear" [input,reset,ratex,ratey,freq,initx,inity,alpha,xexponent,beta,yexponent] Nothing 1 (Special 0) NoId
+
+-- | Weakly Nonlinear Oscillator
+--
+--  WeaklyNonlinear2 [AR] input=0.0 reset=0.0 ratex=1.0 ratey=1.0 freq=440.0 initx=0.0 inity=0.0 alpha=0.0 xexponent=0.0 beta=0.0 yexponent=0.0
+weaklyNonlinear2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+weaklyNonlinear2 rate input reset ratex ratey freq initx inity alpha xexponent beta yexponent = mkUGen Nothing [AR] (Left rate) "WeaklyNonlinear2" [input,reset,ratex,ratey,freq,initx,inity,alpha,xexponent,beta,yexponent] Nothing 1 (Special 0) NoId
+
+-- | Pulse counter with floating point steps
+--
+--  WrapSummer [KR,AR] trig=0.0 step=1.0 min=0.0 max=1.0 reset=0.0 resetval=0.0
+wrapSummer :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+wrapSummer rate trig_ step min_ max_ reset resetval = mkUGen Nothing [KR,AR] (Left rate) "WrapSummer" [trig_,step,min_,max_,reset,resetval] Nothing 1 (Special 0) NoId
+
+
+-- | Sinewave multiplied by and sync'ed to a carrier
+--
+--  ZOsc [KR,AR] freq=100.0 formantfreq=91.0 shape=0.5 mode=0.5
+zOsc :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
+zOsc rate freq formantfreq shape mode = mkUGen Nothing [KR,AR] (Left rate) "ZOsc" [freq,formantfreq,shape,mode] Nothing 1 (Special 0) NoId
diff --git a/Sound/SC3/UGen/Bindings/HW.hs b/Sound/SC3/UGen/Bindings/HW.hs
--- a/Sound/SC3/UGen/Bindings/HW.hs
+++ b/Sound/SC3/UGen/Bindings/HW.hs
@@ -38,13 +38,18 @@
 -- | Poll value of input UGen when triggered.
 poll :: UGen -> UGen -> UGen -> UGen -> UGen
 poll trig_ in_ trigid label_ =
-  let q = U.unpackLabel label_
-      n = fromIntegral (length q)
-  in C.mkFilter "Poll" ([trig_,in_,trigid,n] ++ q) 0
+  let q = U.unpackLabel True label_
+  in C.mkFilter "Poll" ([trig_,in_,trigid] ++ q) 0
 
 -- | FFT onset detector.
 pv_HainsworthFoote :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen
 pv_HainsworthFoote buf h f thr wt = C.mkOsc AR "PV_HainsworthFoote" [buf,h,f,thr,wt] 1
+
+-- | FFT feature detector for onset detection.
+--
+-- buffer, propsc=0.25, prophfe=0.25, prophfc=0.25, propsf=0.25, threshold=1.0, waittime=0.04
+pv_JensenAndersen :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+pv_JensenAndersen buffer propsc prophfe prophfc propsf threshold waittime = C.mkOsc AR "PV_JensenAndersen" [buffer,propsc,prophfe,prophfc,propsf,threshold,waittime] 1
 
 -- | ASCII string to length prefixed list of constant UGens.
 --
diff --git a/Sound/SC3/UGen/Bindings/HW/External/F0.hs b/Sound/SC3/UGen/Bindings/HW/External/F0.hs
--- a/Sound/SC3/UGen/Bindings/HW/External/F0.hs
+++ b/Sound/SC3/UGen/Bindings/HW/External/F0.hs
@@ -17,6 +17,10 @@
 redPhasor :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
 redPhasor rate trig rate_ start end loop loopstart loopend = C.mkOsc rate "RedPhasor" [trig,rate_,start,end,loop,loopstart,loopend] 1
 
+-- | A phasor that can loop.
+redPhasor2 :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+redPhasor2 rate trig rate_ start end loop loopstart loopend = C.mkOsc rate "RedPhasor2" [trig,rate_,start,end,loop,loopstart,loopend] 1
+
 -- Local Variables:
 -- truncate-lines:t
 -- End:
diff --git a/Sound/SC3/UGen/Bindings/HW/External/SC3_Plugins.hs b/Sound/SC3/UGen/Bindings/HW/External/SC3_Plugins.hs
--- a/Sound/SC3/UGen/Bindings/HW/External/SC3_Plugins.hs
+++ b/Sound/SC3/UGen/Bindings/HW/External/SC3_Plugins.hs
@@ -4,6 +4,8 @@
 import Sound.SC3.Common.Rate
 import qualified Sound.SC3.UGen.Bindings.HW.Construct as C
 import Sound.SC3.UGen.Type
+import qualified Sound.SC3.UGen.UGen as U
+import qualified Sound.SC3.UGen.Bindings.DB.External as X
 
 -- | Convert frequency value to value appropriate for AY tone inputs.
 ayFreqToTone :: Fractional a => a -> a
@@ -12,3 +14,29 @@
 -- | LADSPA plugins inside SuperCollider.
 ladspa :: Int -> Rate -> UGen -> [UGen] -> UGen
 ladspa nc rt k z = C.mkOsc rt "LADSPA" (constant nc : k : z) nc
+
+-- | Lookup index of STK instrument by name.
+stkAt :: (Num t,Enum t) => String -> t
+stkAt nm =
+  let nm_seq = ["Clarinet", "BlowHole", "Saxofony", "Flute", "Brass"
+               ,"BlowBotl", "Bowed", "Plucked", "StifKarp", "Sitar", "Mandolin"
+               ,"Rhodey", "Wurley", "TubeBell", "HevyMetl", "PercFlut"
+               ,"BeeThree", "FMVoices", "VoicForm", "Moog", "Simple", "Drummer"
+               ,"BandedWG", "Shakers", "ModalBar", "Mesh2D", "Resonate", "Whistle"]
+      tbl = zip nm_seq [0..]
+  in case lookup nm tbl of
+       Just ix -> ix
+       Nothing -> error "stkAt: unknown instr"
+
+-- | freq=220, gate=1, onamp=1, offamp=1, bowpressure=64, bowposition=64, vibfreq=64, vibgain=64, loudness=64
+stkBowedI :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
+stkBowedI rt freq gate_ onamp offamp bowpressure bowposition vibfreq vibgain loudness =
+  let args = mce [2,bowpressure,4,bowposition,11,vibfreq,1,vibgain,128,loudness]
+  in X.stkInst rt (stkAt "Bowed") freq gate_ onamp offamp args
+
+-- | Wrapping Synthesis toolkit.
+--
+--  StkGlobals [AR] showWarnings=0.0 printErrors=0.0 rawfilepath=0.0
+stkGlobals :: Rate -> UGen -> UGen -> UGen -> UGen
+stkGlobals rate showWarnings printErrors rawfilepath =
+  mkUGen Nothing [AR] (Left rate) "StkGlobals" ([showWarnings,printErrors] ++ U.unpackLabel False rawfilepath) Nothing 1 (Special 0) NoId
diff --git a/Sound/SC3/UGen/Bindings/HW/External/Zita.hs b/Sound/SC3/UGen/Bindings/HW/External/Zita.hs
--- a/Sound/SC3/UGen/Bindings/HW/External/Zita.hs
+++ b/Sound/SC3/UGen/Bindings/HW/External/Zita.hs
@@ -8,23 +8,19 @@
 import Sound.SC3.UGen.Type
 
 -- | Parameter (name,value) pairs.
---
--- > unwords $ map fst zitaRev_param
-zitaRev_param :: [(String, Double)]
+zitaRev_param :: Num n => [(String,n,(n,n,String))]
 zitaRev_param =
-  [("in1",0.0)
-  ,("in2",0.0)
-  ,("in_delay",60.0)
-  ,("lf_x",200) -- log, 50, 1000
-  ,("low_rt60",3) -- log, 1, 8
-  ,("mid_rt60",2) -- log, 1, 8
-  ,("hf_damping",6000) -- log, 1500, 24000
-  ,("eq1_freq",315) -- log, 40, 2500
-  ,("eq1_level",0) -- lin, -15, 15
-  ,("eq2_freq",1500) -- log, 160, 10000
-  ,("eq2_level",0) -- lin, -15, 15
-  ,("dry_wet_mix",0) -- lin, 0, 1
-  ,("level",-20) -- lin, -9, 9
+  [("in_delay",60,(20,100,"lin")) -- ms
+  ,("lf_x",200,(50,1000,"exp"))
+  ,("low_rt60",3,(1,8,"exp"))
+  ,("mid_rt60",2,(1,8,"exp"))
+  ,("hf_damping",6000,(1500,24000,"exp"))
+  ,("eq1_freq",315,(40,2500,"exp"))
+  ,("eq1_level",0,(-15,15,"lin"))
+  ,("eq2_freq",1500,(160,10000,"exp"))
+  ,("eq2_level",0,(-15,15,"lin"))
+  ,("dry_wet_mix",0,(0,1,"lin"))
+  ,("level",-20,(-9,9,"lin"))
   ]
 
 -- | ZitaRev binding.
diff --git a/Sound/SC3/UGen/Bindings/Monad.hs b/Sound/SC3/UGen/Bindings/Monad.hs
--- a/Sound/SC3/UGen/Bindings/Monad.hs
+++ b/Sound/SC3/UGen/Bindings/Monad.hs
@@ -12,7 +12,7 @@
 
 -- | Clone a unit generator (mce . replicateM).
 clone :: UId m => Int -> m UGen -> m UGen
-clone n = liftM mce . replicateM n
+clone n = fmap mce . replicateM n
 
 -- * Demand
 
diff --git a/Sound/SC3/UGen/Envelope.hs b/Sound/SC3/UGen/Envelope.hs
--- a/Sound/SC3/UGen/Envelope.hs
+++ b/Sound/SC3/UGen/Envelope.hs
@@ -40,8 +40,8 @@
 envGate_def :: UGen
 envGate_def =
     let level = 1
-        gate_ = meta_control KR "gate" 1 (0,1,"lin",1,"")
-        fadeTime = meta_control KR "fadeTime" 0.02 (0,10,"lin",0,"s")
+        gate_ = control_m KR "gate" 1 (0,1,"gate")
+        fadeTime = control_m KR "fadeTime" 0.02 (0,10,"lin")
         doneAction = RemoveSynth
         curve = EnvSin
     in envGate level gate_ fadeTime doneAction curve
diff --git a/Sound/SC3/UGen/Event.hs b/Sound/SC3/UGen/Event.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Event.hs
@@ -0,0 +1,170 @@
+-- | Event and Ctl systems for external control interfaces.
+module Sound.SC3.UGen.Event where
+
+import Sound.SC3.Common.Rate {- hsc3 -}
+import Sound.SC3.UGen.Bindings.DB {- hsc3 -}
+import Sound.SC3.UGen.Bindings.Composite {- hsc3 -}
+import Sound.SC3.UGen.Type {- hsc3 -}
+import Sound.SC3.UGen.UGen {- hsc3 -}
+
+-- * Event
+
+-- | (w/gate,x,y,z/force,orientation,radius-x,radius-y,pitch,pitch-x,pitch-y)
+type REvent t = (t,t,t,t,t,t,t,t,t,t)
+
+-- | Translate list to REvent.
+rEvent_from_list :: Num t => [t] -> REvent t
+rEvent_from_list l =
+  case l of
+    [w,x,y,z,o,rx,ry,p,px,py] -> (w,x,y,z,o,rx,ry,p,px,py)
+    _ -> error "rEvent_from_list?"
+
+{- | k0 = index of control bus zero for event system,
+    stp = voice index incremennt,
+      c = event channel or voice (zero indexed)
+-}
+rEventAddr :: UGen -> UGen -> UGen -> REvent UGen
+rEventAddr k0 stp c =
+  let u = in' 10 KR (k0 + (c * stp))
+  in rEvent_from_list (mceChannels u)
+
+-- | c0 = index of voice (channel) zero for event set, n = number of voices (channels)
+rEventVoicerAddr :: UGen -> UGen -> UGen -> Int -> (Int -> REvent UGen -> UGen) -> UGen
+rEventVoicerAddr k0 stp c0 n f = mce (map (\c -> f c (rEventAddr k0 stp (c0 + constant c))) [0 .. n - 1])
+
+-- | 'rEventAddr' with 'control' inputs for /eventAddr/, /eventIncr/ and /eventZero/.
+rEvent :: REvent UGen
+rEvent = rEventAddr (control KR "eventAddr" 13000) (control KR "eventIncr" 10) (control KR "eventZero" 0)
+
+-- | 'rEventVoicerAddr' with 'control' inputs for /eventAddr/, /eventIncr/ and /eventZero/.
+rEventVoicer :: Int -> (Int -> REvent UGen -> UGen) -> UGen
+rEventVoicer = rEventVoicerAddr (control KR "eventAddr" 13000) (control KR "eventIncr" 10) (control KR "eventZero" 0)
+
+{- | Given /g/ and /p/ fields of an 'REvent' derive a 'gateReset' from g
+and a trigger derived from monitoring /g/ and /p/ for changed values.
+-}
+rEventGateReset :: UGen -> UGen -> (UGen, UGen)
+rEventGateReset g p = let tr = changed p 0.01 + changed g 0.01 in (gateReset g tr,tr)
+
+-- * Ctl
+
+-- | Sequence of 16 continous controller inputs in range (0-1).
+type RCtl = (UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen)
+
+-- | k0 = index of control bus zero for ctl system, c = ctl channel or voice (zero indexed)
+rCtlAddr :: UGen -> UGen -> RCtl
+rCtlAddr k0 c =
+  let u = in' 16 KR (k0 + (c * 16))
+  in case mceChannels u of
+       [cc0,cc1,cc2,cc3,cc4,cc5,cc6,cc7,cc8,cc9,cc10,cc11,cc12,cc13,cc14,cc15] ->
+         (cc0,cc1,cc2,cc3,cc4,cc5,cc6,cc7,cc8,cc9,cc10,cc11,cc12,cc13,cc14,cc15)
+       _ -> error "rCtlAddr?"
+
+-- | c0 = index of voice (channel) zero for ctl set, n = number of voices (channels)
+rCtlVoicerAddr :: UGen -> UGen -> Int -> (Int -> RCtl -> UGen) -> UGen
+rCtlVoicerAddr k0 c0 n f = mce (map (\c -> f c (rCtlAddr k0 (c0 + constant c))) [0 .. n - 1])
+
+-- | 'rCtlAddr' with 'control' inputs for /CtlAddr/ and /CtlZero/.
+rCtl :: RCtl
+rCtl = rCtlAddr (control KR "CtlAddr" 11000) (control KR "CtlZero" 0)
+
+-- | 'rCtlVoicerAddr' with 'control' inputs for /CtlAddr/ and /CtlZero/.
+rCtlVoicer :: Int -> (Int -> RCtl -> UGen) -> UGen
+rCtlVoicer = rCtlVoicerAddr (control KR "CtlAddr" 11000) (control KR "CtlZero" 0)
+
+-- | First eight elements of RCtl.
+type RCtl8 = (UGen,UGen,UGen,UGen,UGen,UGen,UGen,UGen)
+
+-- | Select first eight elements of RCtl.
+rCtl_to_rCtl8 :: RCtl -> RCtl8
+rCtl_to_rCtl8 (cc0,cc1,cc2,cc3,cc4,cc5,cc6,cc7,_,_,_,_,_,_,_,_) = (cc0,cc1,cc2,cc3,cc4,cc5,cc6,cc7)
+
+-- | 'rCtlVoicer' of 'rCtl_to_rCtl8'
+rCtl8Voicer :: Int -> (Int -> RCtl8 -> UGen) -> UGen
+rCtl8Voicer k0 f = rCtlVoicer k0 (\n c -> f n (rCtl_to_rCtl8 c))
+
+-- * Names
+
+{- | See SCClassLibrary/Common/Control/Spec:ControlSpec.initClass
+
+"ControlSpec defines the range and curve of a control"
+-}
+sc3_control_spec :: Fractional t => [(String,(t,t,String))]
+sc3_control_spec =
+  [("amp",(0,1,"amp"))
+  ,("beats",(0,20,"lin"))
+  ,("bipolar",(-1,1,"lin"))
+  ,("boostcut",(-20,20,"lin"))
+  ,("db",(-180,0,"db"))
+  ,("delay",(0.0001,1,"exp"))
+  ,("detune",(-20,20,"lin"))
+  ,("freq",(20,20000,"exp"))
+  ,("lofreq",(0.1,100,"exp"))
+  ,("midfreq",(25,4200,"exp"))
+  ,("midi",(0,127,"lin"))
+  ,("midinote",(0,127,"lin"))
+  ,("midivelocity",(1,127,"lin"))
+  ,("pan",(-1,1,"lin"))
+  ,("phase",(0,6.28318,"lin"))
+  ,("rate",(0.125,8,"exp"))
+  ,("rq",(0.001,2,"exp"))
+  ,("unipolar",(0,1,"lin"))
+  ,("widefreq",(0.1,20000,"exp"))]
+
+{- | See Kyma X Revealed, p.403
+
+"The following EventValue names are associated with initial ranges
+other than (0,1). EventValue names are not case-sensitive."
+
+This list adds curve specifiers as strings.
+
+> let x = Data.List.intersect (map fst sc3_control_spec) (map fst kyma_event_value_ranges)
+> x == ["beats","boostcut","freq","rate"]
+> let c z = let (p,q) = unzip z in let f i = filter (flip elem i . fst) in zip (f p sc3_control_spec) (f q kyma_event_value_ranges)
+> c (zip x x)
+
+> c [("lofreq","freqlow"),("midfreq","freqmid")]
+> lookup "freqhigh" kyma_event_value_ranges
+-}
+kyma_event_value_ranges :: Fractional t => [(String,(t,t,String))]
+kyma_event_value_ranges =
+  [("angle",(-0.5,1.5,"lin"))
+  ,("beats",(1,16,"lin"))
+  ,("boostcut",(-12,12,"lin"))
+  ,("bpm",(0,2000,"lin"))
+  ,("centervalue",(-1,1,"lin"))
+  ,("coef",(-1,1,"lin"))
+  ,("cutoff",(0,10000,"exp"))
+  ,("cycles",(0,100,"lin"))
+  ,("dcoffset",(-1,1,"lin"))
+  ,("direction",(-1,1,"lin"))
+  ,("distance",(-2,2,"lin"))
+  ,("fmntshift",(0.75,1.25,"lin"))
+  ,("freq",(0,10000,"exp"))
+  ,("freqhigh",(8000,24000,"exp")) -- sampleRate / 2
+  ,("freqjitter",(0,1,"lin"))
+  ,("freqlow",(0,1000,"exp"))
+  ,("freqmid",(1000,8000,"exp"))
+  ,("gain",(0,10,"amp"))
+  ,("gaindb",(-128,128,"lin"))
+  ,("interval",(-24,24,"lin"))
+  ,("keynumber",(0,127,"lin"))
+  ,("logfreq",(0,127,"lin"))
+  ,("looplength",(-1,1,"lin"))
+  ,("offset",(-1,1,"lin"))
+  ,("onduration",(0,30,"lin"))
+  ,("panner",(-0.5,1.5,"lin"))
+  ,("pitch",(0,127,"lin"))
+  ,("q",(0,10,"lin"))
+  ,("radius",(-2,2,"lin"))
+  ,("rate",(0,2,"lin"))
+  ,("ratio",(0,100,"lin"))
+  ,("scale",(-2,2,"lin"))
+  ,("smallInterval",(0,12,"lin"))
+  ,("steps",(1,128,"lin"))
+  ,("swing",(0,0.5,"lin"))
+  ,("threshdb",(-60,0,"lin"))
+  ,("timeconstant",(0.0001,5,"lin"))
+  ,("timeindex",(-1,1,"lin"))
+  ,("tune",(-1,1,"lin"))
+  ,("upinterval",(0,24,"lin"))]
diff --git a/Sound/SC3/UGen/Graph.hs b/Sound/SC3/UGen/Graph.hs
--- a/Sound/SC3/UGen/Graph.hs
+++ b/Sound/SC3/UGen/Graph.hs
@@ -19,11 +19,12 @@
 import Data.List {- base -}
 import Data.Maybe {- base -}
 
-import Sound.SC3.Common.Rate
-import qualified Sound.SC3.UGen.Analysis as Analysis
-import Sound.SC3.UGen.Type
-import Sound.SC3.UGen.UGen
+import Sound.SC3.Common.Rate {- hsc3 -}
+import Sound.SC3.UGen.Type {- hsc3 -}
+import Sound.SC3.UGen.UGen {- hsc3 -}
 
+import qualified Sound.SC3.UGen.Analysis as Analysis {- hsc3 -}
+
 -- * Types
 
 -- | Port index.
@@ -52,7 +53,7 @@
                        ,u_node_k_name :: String
                        ,u_node_k_default :: Sample
                        ,u_node_k_type :: K_Type
-                       ,u_node_k_meta :: Maybe (C_Meta Sample)}
+                       ,u_node_k_meta :: Maybe (Control_Meta Sample)}
             | U_Node_U {u_node_id :: UID_t
                        ,u_node_u_rate :: Rate
                        ,u_node_u_name :: String
@@ -65,6 +66,17 @@
                        ,u_node_p_index :: Port_Index}
             deriving (Eq,Show)
 
+-- | Convert from U_Node_K to Control (ie. discard index).
+u_node_k_to_control :: U_Node -> Control
+u_node_k_to_control nd =
+  case nd of
+    U_Node_K _ rt ix nm df ty mt -> Control rt ix nm df (ty == K_TR) mt
+    _ -> error "u_node_k_to_control?"
+
+-- | Derive "user" name for U_Node
+u_node_user_name :: U_Node -> String
+u_node_user_name n = ugen_user_name (u_node_u_name n) (u_node_u_special n)
+
 -- | Type to represent a unit generator graph.
 data U_Graph = U_Graph {ug_next_id :: UID_t
                        ,ug_constants :: [U_Node]
@@ -185,7 +197,7 @@
         cmp = compare `on` u_node_k_ix
         c' = sortBy cmp c
         coheres z = maybe True (== z) . u_node_k_index
-        coherent = all id (zipWith coheres [0..] c')
+        coherent = and (zipWith coheres [0..] c')
     in if coherent then c' else error (show ("u_node_sort_controls: incoherent",c))
 
 -- | Determine 'K_Type' of a /control/ UGen at 'U_Node_U', or not.
@@ -198,14 +210,18 @@
       ("AudioControl",AR) -> Just K_AR
       _ -> Nothing
 
--- | Is 'U_Node' an /implicit/ control UGen?
-u_node_is_implicit_control :: U_Node -> Bool
-u_node_is_implicit_control n =
+-- | Is 'U_Node' a control UGen?
+u_node_is_control :: U_Node -> Bool
+u_node_is_control n =
     let cs = ["AudioControl","Control","TrigControl"]
     in case n of
-        U_Node_U x _ s _ _ _ _ -> x == -1 && s `elem` cs
+        U_Node_U _ _ s _ _ _ _ -> s `elem` cs
         _ -> False
 
+-- | Is 'U_Node' an /implicit/ control UGen?
+u_node_is_implicit_control :: U_Node -> Bool
+u_node_is_implicit_control n = u_node_is_control n && u_node_id n == -1
+
 -- | Is U_Node implicit?
 u_node_is_implicit :: U_Node -> Bool
 u_node_is_implicit n = u_node_u_name n == "MaxLocalBufs" || u_node_is_implicit_control n
@@ -473,10 +489,7 @@
 
 -- | Variant that runs 'error' as required.
 ug_pv_validate :: U_Graph -> U_Graph
-ug_pv_validate g =
-    case ug_pv_check g of
-      Nothing -> g
-      Just err -> error err
+ug_pv_validate g = maybe g error (ug_pv_check g)
 
 -- * UGen to U_Graph
 
@@ -504,19 +517,18 @@
     let cs = ug_constants s
         ks = ug_controls s
         us = ug_ugens s
-        u_nm z = ugen_user_name (u_node_u_name z) (u_node_u_special z)
         hist pp_f =
           let h (x:xs) = (x,length (x:xs))
               h [] = error "graph_stat_ln"
-          in unwords . map (\(p,q) -> pp_f p ++ "×" ++ show q) . map h . group . sort
+          in unwords . map ((\(p,q) -> pp_f p ++ "×" ++ show q) . h) . group . sort
     in ["number of constants       : " ++ show (length cs)
        ,"number of controls        : " ++ show (length ks)
        ,"control rates             : " ++ hist show (map u_node_k_rate ks)
        ,"control names             : " ++ unwords (map u_node_k_name ks)
        ,"number of unit generators : " ++ show (length us)
        ,"unit generator rates      : " ++ hist show (map u_node_u_rate us)
-       ,"unit generator set        : " ++ hist id (map u_nm us)
-       ,"unit generator sequence   : " ++ unwords (map u_nm us)]
+       ,"unit generator set        : " ++ hist id (map u_node_user_name us)
+       ,"unit generator sequence   : " ++ unwords (map u_node_user_name us)]
 
 -- | 'unlines' of 'ug_stat_ln'.
 ug_stat :: U_Graph -> String
diff --git a/Sound/SC3/UGen/Graph/Reconstruct.hs b/Sound/SC3/UGen/Graph/Reconstruct.hs
--- a/Sound/SC3/UGen/Graph/Reconstruct.hs
+++ b/Sound/SC3/UGen/Graph/Reconstruct.hs
@@ -1,4 +1,4 @@
--- | A /disassembler/ for UGen graphs.
+-- | A disassembler for UGen graphs.
 module Sound.SC3.UGen.Graph.Reconstruct where
 
 import Data.Char {- base -}
@@ -6,11 +6,12 @@
 import Text.Printf {- base -}
 
 import qualified Sound.SC3.Common.Math.Operator as Operator
-import Sound.SC3.Common.Rate
+import qualified Sound.SC3.Common.Rate as Rate
 import qualified Sound.SC3.UGen.Graph as Graph
-import Sound.SC3.UGen.Type
-import Sound.SC3.UGen.UGen
+import qualified Sound.SC3.UGen.Type as Type
+import qualified Sound.SC3.UGen.UGen as UGen
 
+-- | Generate label for 'Graph.From_Port'
 from_port_label :: Char -> Graph.From_Port -> String
 from_port_label jn fp =
     case fp of
@@ -19,6 +20,7 @@
       Graph.From_Port_U n Nothing -> printf "u_%d" n
       Graph.From_Port_U n (Just i) -> printf "u_%d%co_%d" n jn i
 
+-- | Any name that does not begin with a letter is considered an operator.
 is_operator_name :: String -> Bool
 is_operator_name nm =
     case nm of
@@ -41,9 +43,9 @@
 
 reconstruct_graph_module :: String -> Graph.U_Graph -> [String]
 reconstruct_graph_module nm gr =
-  let imp = ["import Sound.SC3"
-            ,"import Sound.SC3.Common.Base"
-            ,"import Sound.SC3.UGen.Plain"]
+  let imp = ["import Sound.SC3 {- hsc3 -}"
+            ,"import Sound.SC3.Common.Base {- hsc3 -}"
+            ,"import Sound.SC3.UGen.Plain {- hsc3 -}"]
       (b0:bnd,res) = reconstruct_graph gr
       hs = ("  let " ++ b0) : map ("      " ++ ) bnd ++ ["  in " ++ res]
       pre = [nm ++ " :: UGen",nm ++ " ="]
@@ -71,11 +73,11 @@
         c = Graph.u_node_c_value u
     in printf "%s = constant (%f::Sample)" l c
 
-reconstruct_c_ugen :: Graph.U_Node -> UGen
-reconstruct_c_ugen u = constant (Graph.u_node_c_value u)
+reconstruct_c_ugen :: Graph.U_Node -> Type.UGen
+reconstruct_c_ugen u = Type.constant (Graph.u_node_c_value u)
 
 -- | Discards index.
-reconstruct_k_rnd :: Graph.U_Node -> (Rate,String,Sample)
+reconstruct_k_rnd :: Graph.U_Node -> (Rate.Rate,String,Type.Sample)
 reconstruct_k_rnd u =
     let r = Graph.u_node_k_rate u
         n = Graph.u_node_k_name u
@@ -88,13 +90,13 @@
         (r,n,d) = reconstruct_k_rnd u
     in printf "%s = control %s \"%s\" %f" l (show r) n d
 
-reconstruct_k_ugen :: Graph.U_Node -> UGen
+reconstruct_k_ugen :: Graph.U_Node -> Type.UGen
 reconstruct_k_ugen u =
     let (r,n,d) = reconstruct_k_rnd u
-    in control_f64 r Nothing n d
+    in UGen.control_f64 r Nothing n d
 
-ugen_qname :: String -> Special -> (String,String)
-ugen_qname nm (Special n) =
+ugen_qname :: String -> Type.Special -> (String,String)
+ugen_qname nm (Type.Special n) =
     case nm of
       "UnaryOpUGen" -> ("uop CS",Operator.unaryName n)
       "BinaryOpUGen" -> ("binop CS",Operator.binaryName n)
@@ -125,7 +127,7 @@
         nd_s = let t = "%s = nondet \"%s\" (UId %d) %s [%s] %d"
                in printf t l n z (show r) i_l o
         c = case q of
-              "ugen" -> if Graph.u_node_u_ugenid u == NoId then u_s else nd_s
+              "ugen" -> if Graph.u_node_u_ugenid u == Type.NoId then u_s else nd_s
               _ -> printf "%s = %s \"%s\" %s %s" l q n (show r) i_s
         m = reconstruct_mce_str u
     in if Graph.u_node_is_implicit_control u
@@ -136,6 +138,6 @@
 reconstruct_mrg_str u =
     let zero_out n = not (Graph.u_node_is_implicit_control n) && null (Graph.u_node_u_outputs n)
     in case map Graph.u_node_label (filter zero_out u) of
-         [] -> error "reconstruct_mrg_str"
+         [] -> error "reconstruct_mrg_str: nil input?"
          [o] -> printf "%s" o
          o -> printf "mrg [%s]" (intercalate "," o)
diff --git a/Sound/SC3/UGen/HS.hs b/Sound/SC3/UGen/HS.hs
--- a/Sound/SC3/UGen/HS.hs
+++ b/Sound/SC3/UGen/HS.hs
@@ -186,11 +186,14 @@
     let b1 = exp (log 0.001 / (dt * sr))
     in x + b1 * y1
 
--- | dt must not be zero.
+-- | Given time /dt/ in frames construct 'iir1' 'lag' function.
+--   dt must not be zero.
+lag_f_frames :: Floating a => a -> a -> a -> a
+lag_f_frames dt x y1 = let b1 = exp (log 0.001 / dt) in x + b1 * (y1 - x)
+
+-- | 'lag_f_frames' with /dt/ in seconds.
 lag_f :: Floating a => a -> a -> a -> a -> a
-lag_f sr dt x y1 =
-    let b1 = exp (log 0.001 / (dt * sr))
-    in x + b1 * (y1 - x)
+lag_f sr dt = lag_f_frames (dt * sr)
 
 lag :: Floating t => t -> F_ST1 t (t,t) t
 lag sr ((i,t),st) = let r = lag_f sr t i st in (r,r)
@@ -209,6 +212,22 @@
     let r = if trig then resetPos else sc3_wrap start end (ph + rate)
     in (ph,r)
 
+-- > Sound.SC3.Plot.plot_fn_r1_ln (\x -> mod_dif x 0 1) (0,4)
+mod_dif :: RealFrac a => a -> a -> a -> a
+mod_dif i j m =
+  let d = absdif i j `sc3_mod` m
+      h = m * 0.5
+  in h - absdif d h
+
+{-
+-- > Sound.SC3.Plot.plot_fn_r1_ln (\x -> modDif x 0 1) (0,4)
+modDif :: BinaryOp a => a -> a -> a -> a
+modDif i j m =
+  let d = absDif i j `modE` m
+      h = m * 0.5
+  in h - absDif d h
+-}
+
 -- | * LIST PROCESSING
 
 l_apply_f_st0 :: F_ST0 st o -> st -> [o]
@@ -232,7 +251,7 @@
 l_lag sr i t = l_apply_f_st1 (lag sr) 0 (zip i t)
 
 l_slope :: Floating t => t -> [t] -> [t]
-l_slope sr i = l_apply_f_st1 (slope sr) 0 i
+l_slope sr = l_apply_f_st1 (slope sr) 0
 
 -- > let rp = repeat
 -- > take 10 (l_phasor (rp False) (rp 1) (rp 0) (rp 4) (rp 0)) == [0,1,2,3,0,1,2,3,0,1]
@@ -294,6 +313,7 @@
 import Sound.SC3.Plot.FFT {- hsc3-plot -}
 
 let n = take 4096 (l_white_noise 'α')
+let plotTable1 = plot_p1_ln . return
 
 plotTable1 n
 plotTable1 (take 4096 (l_brown_noise 'α'))
@@ -315,7 +335,7 @@
 plotTable1 (rfft_pure (l_resonz_ir (sr_to_rps 44100,440,0.1) n))
 plotTable1 (rfft_pure (l_rlpf_ir (sr_to_rps 44100,1200,0.1) n))
 
-import Sound.SC3.Common.Math
+import Sound.SC3.Common.Math {- hsc3 -}
 
 plot_fft1_mnn 44100 (rfft_pure (l_bw_lpf (44100,midi_to_cps 60) n))
 plot_fft1_mnn 44100 (rfft_pure (l_resonz_ir (sr_to_rps 44100,midi_to_cps 69,0.1) n))
@@ -329,4 +349,5 @@
 
 plotTable1 (take 512 (l_sin_osc 48000 (repeat 440)))
 plotTable1 (take 512 (l_cos_osc 48000 (repeat 440)))
+
 -}
diff --git a/Sound/SC3/UGen/Name.hs b/Sound/SC3/UGen/Name.hs
--- a/Sound/SC3/UGen/Name.hs
+++ b/Sound/SC3/UGen/Name.hs
@@ -1,6 +1,6 @@
 {- | Functions to normalise UGen names.
 
-@SC3@ UGen names are capitalised.
+@SC3@ UGen names are capitalised at word boundaries.
 @hsc3@ cannot use these names for UGen constructor functions.
 Haskell names are given by lower-casing until the first word edge.
 Lisp names are given by lower-casing everything and adding hyphens before edges.
@@ -23,6 +23,7 @@
 -}
 
 -- | Find all SC3 name edges. Edges occur at non lower-case letters.
+--   This rule is very simple but is coherent and predictable and works well for .hs names.
 sc3_name_edges_plain :: String -> [Bool]
 sc3_name_edges_plain = map (not . isLower)
 
@@ -34,6 +35,7 @@
 > sc3_name_edges "PV_Add" == [False,False,False,True,False,False]
 > sc3_name_edges "A2K" == [False,False,False]
 > sc3_name_edges "Lag2UD" == [False,False,False,True,True,True]
+> sc3_name_edges "PeakEQ" == [False,False,False,False,True,True]
 -}
 sc3_name_edges :: String -> [Bool]
 sc3_name_edges s =
@@ -43,22 +45,21 @@
      then replicate n False ++ q
      else replicate (n - 1) False ++ [True] ++ q
 
-{- | Convert from SC3 name to HS style name.
+{- | Convert from SCLang (class) name to Haskell (function) name.
 
-> s = words "SinOsc LFSaw FFT PV_Add AllpassN BHiPass BinaryOpUGen HPZ1 RLPF TGrains DFM1 FBSineC A2K Lag2UD IIRFilter FMGrainB"
-> l = words "sinOsc lfSaw fft pv_Add allpassN bHiPass binaryOpUGen hpz1 rlpf tGrains dfm1 fbSineC a2k lag2UD iirFilter fmGrainB"
+> s = words "SinOsc LFSaw FFT PV_Add AllpassN BHiPass BinaryOpUGen HPZ1 RLPF TGrains DFM1 FBSineC A2K Lag2UD IIRFilter FMGrainB Pan2 PeakEQ RIRandN"
+> l = words "sinOsc lfSaw fft pv_Add allpassN bHiPass binaryOpUGen hpz1 rlpf tGrains dfm1 fbSineC a2k lag2UD iirFilter fmGrainB pan2 peakEQ riRandN"
 > map sc3_name_to_hs_name s == l
 -}
 sc3_name_to_hs_name :: String -> String
 sc3_name_to_hs_name s =
     let f (c,e) = if e then toUpper c else c
-        s_lc = map toLower s
-    in map f (zip s_lc (sc3_name_edges s))
+    in zipWith (curry f) (map toLower s) (sc3_name_edges s)
 
 {- | Convert from SC3 name to Lisp style name.
 
-> s = words "SinOsc LFSaw FFT PV_Add AllpassN BHiPass BinaryOpUGen HPZ1 RLPF TGrains DFM1"
-> l = words "sin-osc lf-saw fft pv-add allpass-n b-hi-pass binary-op-u-gen hpz1 rlpf t-grains dfm1"
+> s = words "SinOsc LFSaw FFT PV_Add AllpassN BHiPass BinaryOpUGen HPZ1 RLPF TGrains DFM1 BPeakEQ Pan2 RIRandN"
+> l = words "sin-osc lf-saw fft pv-add allpass-n b-hi-pass binary-op-u-gen hpz1 rlpf t-grains dfm1 b-peak-e-q pan-2 ri-rand-n"
 > map sc3_name_to_lisp_name s == l
 -}
 sc3_name_to_lisp_name :: String -> String
diff --git a/Sound/SC3/UGen/Plain.hs b/Sound/SC3/UGen/Plain.hs
--- a/Sound/SC3/UGen/Plain.hs
+++ b/Sound/SC3/UGen/Plain.hs
@@ -1,11 +1,8 @@
 -- | Plain notation for SuperCollider UGen graphs.
 --
--- > let {s = ugen "SinOsc" AR [440,0] 1
--- >     ;m = binop "*" AR s 0.1
--- >     ;o = ugen "Out" AR [0,m] 0}
--- > in Sound.SC3.Server.Play.audition o >> Sound.SC3.UGen.Dot.draw o
---
--- > audition (out 0 (sinOsc AR 440 0 * 0.1))
+-- > s = ugen "SinOsc" AR [440,0] 1
+-- > m = binop CI "*" AR s 0.1
+-- > o = ugen "Out" AR [0,m] 0
 module Sound.SC3.UGen.Plain where
 
 import Sound.SC3.Common.Base
@@ -46,7 +43,7 @@
 
 -- | Construct non-deterministic UGen.
 --
--- > import Sound.SC3.ID
--- > nondet "WhiteNoise" (UId (fromEnum 'a')) AR [] 1 == whiteNoise 'a' AR
+-- > import Sound.SC3.Common.UId
+-- > binop CI "*" AR (nondet "WhiteNoise" (UId (fromEnum 'a')) AR [] 1) 0.05
 nondet :: String -> UGenId -> Rate -> [UGen] -> Int -> UGen
 nondet nm z r i nc = mk_plain r nm i nc (Special 0) z
diff --git a/Sound/SC3/UGen/Type.hs b/Sound/SC3/UGen/Type.hs
--- a/Sound/SC3/UGen/Type.hs
+++ b/Sound/SC3/UGen/Type.hs
@@ -1,4 +1,4 @@
--- | Unit Generator ('UGen'), and associated types and instances.
+-- | Unit Generator ('UGen') and associated types and instances.
 module Sound.SC3.UGen.Type where
 
 import Data.Bits {- base -}
@@ -6,8 +6,10 @@
 import qualified Data.Fixed as F {- base -}
 import Data.List {- base -}
 import Data.Maybe {- base -}
+import Text.Printf {- base -}
+
 import qualified Safe {- safe -}
-import System.Random {- random -}
+import qualified System.Random as Random {- random -}
 
 import qualified Sound.SC3.Common.Math as Math
 import Sound.SC3.Common.Math.Operator
@@ -37,26 +39,60 @@
 --
 -- > Constant 3 == Constant 3
 -- > (Constant 3 > Constant 1) == True
-data Constant = Constant {constantValue :: Sample}
-                deriving (Eq,Ord,Read,Show)
+newtype Constant = Constant {constantValue :: Sample} deriving (Eq,Ord,Read,Show)
 
 -- | Control meta-data.
-data C_Meta n =
-    C_Meta {ctl_min :: n -- ^ Minimum
-           ,ctl_max :: n -- ^ Maximum
-           ,ctl_warp :: String -- ^ @(0,1)@ @(min,max)@ transfer function.
-           ,ctl_step :: n -- ^ The step to increment & decrement by.
-           ,ctl_units :: String -- ^ Unit of measure (ie hz, ms etc.).
-           }
+data Control_Meta n =
+    Control_Meta {ctl_min :: n -- ^ Minimum
+                 ,ctl_max :: n -- ^ Maximum
+                 ,ctl_warp :: String -- ^ @(0,1)@ @(min,max)@ transfer function.
+                 ,ctl_step :: n -- ^ The step to increment & decrement by.
+                 ,ctl_units :: String -- ^ Unit of measure (ie hz, ms etc.).
+                 ,controlGroup :: Maybe Control_Group -- ^ Control group.
+                 }
     deriving (Eq,Read,Show)
 
--- | 5-tuple form of 'C_Meta' data.
-type C_Meta_T5 n = (n,n,String,n,String)
+-- | 3-tuple form of 'Control_Meta' data.
+type Control_Meta_T3 n = (n,n,String)
 
--- | Lift 'C_Meta_5' to 'C_Meta' allowing type coercion.
-c_meta_t5 :: (n -> m) -> C_Meta_T5 n -> C_Meta m
-c_meta_t5 f (l,r,w,stp,u) = C_Meta (f l) (f r) w (f stp) u
+-- | Lift 'Control_Meta_T3' to 'Control_Meta' allowing type coercion.
+control_meta_t3 :: Num m => (n -> m) -> Control_Meta_T3 n -> Control_Meta m
+control_meta_t3 f (l,r,w) = Control_Meta (f l) (f r) w 0 "" Nothing
 
+-- | 5-tuple form of 'Control_Meta' data.
+type Control_Meta_T5 n = (n,n,String,n,String)
+
+-- | Lift 'Control_Meta_T5' to 'Control_Meta' allowing type coercion.
+control_meta_t5 :: (n -> m) -> Control_Meta_T5 n -> Control_Meta m
+control_meta_t5 f (l,r,w,stp,u) = Control_Meta (f l) (f r) w (f stp) u Nothing
+
+{- | Controls may form part of a control group. -}
+data Control_Group
+  = Control_Range
+  | Control_Array Int
+  | Control_XY
+  deriving (Eq,Read,Show)
+
+-- | The number of elements in a control group.
+control_group_degree :: Control_Group -> Int
+control_group_degree grp =
+  case grp of
+    Control_Range -> 2
+    Control_Array n -> n
+    Control_XY -> 2
+
+{- | Grouped controls have names that have equal prefixes and identifying suffixes.
+     Range controls have two elements, minima and maxima, suffixes are [ and ].
+     Array controls have N elements and have IX suffixes.
+     XY controls have two elements, X and Y coordinates, suffixes are X and Y.
+-}
+control_group_suffixes :: Control_Group -> [String]
+control_group_suffixes grp =
+  case grp of
+    Control_Range -> ["[","]"]
+    Control_Array n -> map (printf "%02d") [0 .. n - 1]
+    Control_XY -> ["X","Y"]
+
 -- | Control inputs.  It is an invariant that controls with equal
 -- names within a UGen graph must be equal in all other respects.
 data Control = Control {controlOperatingRate :: Rate
@@ -64,12 +100,11 @@
                        ,controlName :: String
                        ,controlDefault :: Sample
                        ,controlTriggered :: Bool
-                       ,controlMeta :: Maybe (C_Meta Sample)}
+                       ,controlMeta :: Maybe (Control_Meta Sample)}
                deriving (Eq,Read,Show)
 
 -- | Labels.
-data Label = Label {ugenLabel :: String}
-             deriving (Eq,Read,Show)
+newtype Label = Label {ugenLabel :: String} deriving (Eq,Read,Show)
 
 -- | Unit generator output descriptor.
 type Output = Rate
@@ -128,7 +163,6 @@
     ceilingE = mkUnaryOperator Ceil ceilingE
     floorE = mkUnaryOperator Floor floorE
 
-
 instance UnaryOp UGen where
     ampDb = mkUnaryOperator AmpDb ampDb
     asFloat = mkUnaryOperator AsFloat asFloat
@@ -271,8 +305,7 @@
       MCE_U _ -> True
       _ -> False
 
--- | Output channels of UGen as a list.  If required, preserves the
--- RHS of and MRG node in channel 0.
+-- | Output channels of UGen as a list.  If required, preserves the RHS of and MRG node in channel 0.
 mceChannels :: UGen -> [UGen]
 mceChannels u =
     case u of
@@ -280,8 +313,7 @@
       MRG_U (MRG x y) -> let r:rs = mceChannels x in MRG_U (MRG r y) : rs
       _ -> [u]
 
--- | Number of channels to expand to.  This function sees into MRG,
--- and is defined only for MCE nodes.
+-- | Number of channels to expand to.  This function sees into MRG, and is defined only for MCE nodes.
 mceDegree :: UGen -> Maybe Int
 mceDegree u =
     case mrg_leftmost u of
@@ -301,10 +333,19 @@
                          in MRG_U (MRG r y) : rs
       _ -> replicate n u
 
--- | Apply MCE transform to a list of inputs.
+-- | Is MCE required, ie. are any input values MCE?
+mceRequired :: [UGen] -> Bool
+mceRequired = any isMCE
+
+{- | Apply MCE transform to a list of inputs.
+     The transform extends each input so all are of equal length, and then transposes the matrix.
+
+> mceInputTransform [mce2 1 2,mce2 3 4] == Just [[1,3],[2,4]]
+> mceInputTransform [mce2 1 2,mce2 3 4,mce3 5 6 7] == Just [[1,3,5],[2,4,6],[1,3,7]]
+-}
 mceInputTransform :: [UGen] -> Maybe [[UGen]]
 mceInputTransform i =
-    if any isMCE i
+    if mceRequired i
     then let n = maximum (map mceDegree_err (filter isMCE i))
          in Just (transpose (map (mceExtend n) i))
     else Nothing
@@ -384,7 +425,7 @@
       Primitive_U p ->
           let o = ugenOutputs p
           in case o of
-               _:_:_ -> mce (map (proxy u) [0..(length o - 1)])
+               _:_:_ -> mce (map (proxy u) [0 .. length o - 1])
                _ -> u
       Constant_U _ -> u
       _ -> error "proxify: illegal ugen"
@@ -436,6 +477,8 @@
 
 -- | Binary math constructor with constant optimisation.
 --
+-- > constant 2 * constant 3 == constant 6
+--
 -- > let o = sinOsc AR 440 0
 --
 -- > o * 1 == o && 1 * o == o && o * 2 /= o
@@ -627,12 +670,12 @@
         in takeWhile (p (m + (n'-n)/2)) (enumFromThen n n')
 
 -- | Unit generators are stochastic.
-instance Random UGen where
+instance Random.Random UGen where
     randomR (Constant_U (Constant l),Constant_U (Constant r)) g =
-        let (n, g') = randomR (l,r) g
+        let (n, g') = Random.randomR (l,r) g
         in (Constant_U (Constant n), g')
     randomR _ _ = error "UGen.randomR: non constant (l,r)"
-    random = randomR (-1.0, 1.0)
+    random = Random.randomR (-1.0, 1.0)
 
 -- | UGens are bit patterns.
 instance Bits UGen where
diff --git a/Sound/SC3/UGen/UGen.hs b/Sound/SC3/UGen/UGen.hs
--- a/Sound/SC3/UGen/UGen.hs
+++ b/Sound/SC3/UGen/UGen.hs
@@ -1,28 +1,27 @@
 -- | UGen data structure representation and associated functions.
 module Sound.SC3.UGen.UGen where
 
-import qualified Data.Char as C {- base -}
+import qualified Data.Char {- base -}
 import Data.Maybe {- base -}
 import Data.List {- base -}
 
-import qualified Sound.SC3.Common.Envelope as E
-import qualified Sound.SC3.Common.Base as B
-import qualified Sound.SC3.Common.Math.Operator as O
-import qualified Sound.SC3.Common.Rate as R
-import qualified Sound.SC3.Common.UId as UId
-import Sound.SC3.UGen.Type
+import qualified Data.List.Split as Split {- split -}
 
+import qualified Sound.SC3.Common.Envelope as Envelope {- hsc3 -}
+import qualified Sound.SC3.Common.Base as Base {- hsc3 -}
+import qualified Sound.SC3.Common.Math.Operator as Operator {- hsc3 -}
+import qualified Sound.SC3.Common.Rate as Rate {- hsc3 -}
+import qualified Sound.SC3.Common.UId as UId {- hsc3 -}
+
+import Sound.SC3.UGen.Type {- hsc3 -}
+
 -- | 'UId' of 'resolveID'.
 toUId :: UId.ID a => a -> UGenId
 toUId = UId . UId.resolveID
 
 -- | Lookup operator name for operator UGens, else UGen name.
 ugen_user_name :: String -> Special -> String
-ugen_user_name nm (Special n) =
-    case nm of
-      "UnaryOpUGen" -> O.unaryName n
-      "BinaryOpUGen" -> O.binaryName n
-      _ -> nm
+ugen_user_name nm (Special n) = fromMaybe nm (Operator.ugen_operator_name nm n)
 
 -- * UGen graph functions
 
@@ -46,17 +45,16 @@
          MRG_U (MRG l r) -> map_f (MRG_U (MRG (recur l) (recur r)))
          _ -> map_f u
 
--- | Right fold of UGen graph.
+{- | Right fold of UGen graph.
+
+> ugenFoldr (:) [] (pan2 (sinOsc AR 440 0) 0.25 0.1)
+-}
 ugenFoldr :: (UGen -> a -> a) -> a -> UGen -> a
 ugenFoldr f st u =
     let recur = flip (ugenFoldr f)
     in case u of
-         Primitive_U p ->
-             let i = ugenInputs p
-             in f u (foldr recur st i)
-         Proxy_U p ->
-             let s = proxySource p
-             in f u (f (Primitive_U s) st)
+         Primitive_U p -> f u (foldr recur st (ugenInputs p))
+         Proxy_U p -> f u (ugenFoldr f st (Primitive_U (proxySource p)))
          MCE_U m -> f u (foldr recur st (mceProxies m))
          MRG_U (MRG l r) -> f u (f l (f r st))
          _ -> f u st
@@ -64,25 +62,39 @@
 -- * Unit generator node constructors
 
 -- | Control input node constructor.
-control_f64 :: R.Rate -> Maybe Int -> String -> Sample -> UGen
+control_f64 :: Rate.Rate -> Maybe Int -> String -> Sample -> UGen
 control_f64 r ix nm d = Control_U (Control r ix nm d False Nothing)
 
 -- | Control input node constructor.
 --
 -- Note that if the name begins with a t_ prefix the control is /not/
 -- converted to a triggered control.  Please see 'tr_control'.
-control :: R.Rate -> String -> Double -> UGen
+control :: Rate.Rate -> String -> Double -> UGen
 control r = control_f64 r Nothing
 
 -- | Variant of 'control' with meta data.
-meta_control :: R.Rate -> String -> Double -> C_Meta_T5 Double -> UGen
-meta_control rt nm df meta =
-    let m = c_meta_t5 id meta
+control_m :: Rate.Rate -> String -> Double -> Control_Meta_T3 Double -> UGen
+control_m rt nm df meta =
+    let m = control_meta_t3 id meta
     in Control_U (Control rt Nothing nm df False (Just m))
 
+-- | Generate group of two controls.  Names are generated according to 'control_group_suffixes'
+control_pair :: Control_Group -> Rate.Rate -> String -> (Double,Double) -> Control_Meta_T3 Double -> (UGen,UGen)
+control_pair grp rt nm (df1,df2) meta =
+    let m = (control_meta_t3 id meta) {controlGroup = Just grp}
+    in case control_group_suffixes grp of
+         [lhs,rhs] ->
+           (Control_U (Control rt Nothing (nm ++ lhs) df1 False (Just m))
+           ,Control_U (Control rt Nothing (nm ++ rhs) df2 False (Just m)))
+         _ -> error "control_pair"
+
+-- | Generate range controls.  Names are generated according to 'control_group_suffixes'
+control_rng :: Rate.Rate -> String -> (Double,Double) -> Control_Meta_T3 Double -> (UGen,UGen)
+control_rng = control_pair Control_Range
+
 -- | Triggered (kr) control input node constructor.
 tr_control_f64 :: Maybe Int -> String -> Sample -> UGen
-tr_control_f64 ix nm d = Control_U (Control R.KR ix nm d True Nothing)
+tr_control_f64 ix nm d = Control_U (Control Rate.KR ix nm d True Nothing)
 
 -- | Triggered (kr) control input node constructor.
 tr_control :: String -> Double -> UGen
@@ -96,7 +108,7 @@
                    _ -> error "control_set: non control input?"
     in zipWith f [0..]
 
--- | Multiple root graph node constructor.
+-- | Multiple root graph node constructor (left input is output)
 mrg2 :: UGen -> UGen -> UGen
 mrg2 u = MRG_U . MRG u
 
@@ -106,8 +118,7 @@
 mce2 :: UGen -> UGen -> UGen
 mce2 x y = mce [x,y]
 
--- | Extract two channels from possible MCE, if there is only one
--- channel it is duplicated.
+-- | Extract two channels from possible MCE, if there is only one channel it is duplicated.
 mce2c :: UGen -> (UGen,UGen)
 mce2c u =
     case mceChannels u of
@@ -117,19 +128,23 @@
 
 -- | Variant of 'mce2c' that requires input to have two channels.
 unmce2 :: UGen -> (UGen, UGen)
-unmce2 = B.t2_from_list . mceChannels
+unmce2 = Base.t2_from_list . mceChannels
 
 -- | Multiple channel expansion for two inputs.
 mce3 :: UGen -> UGen -> UGen -> UGen
 mce3 x y z = mce [x,y,z]
 
+-- | Variant of 'mce2c' that requires input to have two channels.
+unmce3 :: UGen -> (UGen, UGen, UGen)
+unmce3 = Base.t3_from_list . mceChannels
+
 -- | Apply a function to each channel at a unit generator.
 mceMap :: (UGen -> UGen) -> UGen -> UGen
 mceMap f u = mce (map f (mceChannels u))
 
 -- | Map with element index.
 map_ix :: ((Int,a) -> b) -> [a] -> [b]
-map_ix f = map f . zip [0..]
+map_ix f = zipWith (curry f) [0..]
 
 -- | Variant of 'mceMap' with element index.
 mce_map_ix :: ((Int,UGen) -> UGen) -> UGen -> UGen
@@ -151,21 +166,42 @@
 mceChannel n u =
     case u of
       MCE_U m -> mceProxies m !! n
-      _ -> error "mceChannel: non MCE value"
+      _ -> if n == 0 then u else error "mceChannel: non MCE value, non ZERO index"
 
 -- | Transpose rows and columns, ie. {{a,b},{c,d}} to {{a,c},{b,d}}.
 mceTranspose :: UGen -> UGen
 mceTranspose = mce . map mce . transpose . map mceChannels . mceChannels
 
+-- | Rotate mce /k/ places to the right, ie. {a,b,c,d} to {d,a,b,c}
+--
+-- > mceRotate 1 (mce [1,2,3,4]) == mce [4,1,2,3]
+mceRotate :: Int -> UGen -> UGen
+mceRotate k =
+  let rotateRight n p = let (b,a) = splitAt (length p - n) p in a ++ b
+  in mce . rotateRight k . mceChannels
+
+-- | 'concat' at mce channels of each input, ie. {{a,b},{c,d}} to {a,b,c,d}.
+--
+-- > mceConcat (map mce [[1,2],[3,4]]) == mce [1..4]
+mceConcat :: [UGen] -> UGen
+mceConcat = mce . concat . map mceChannels
+
+-- | Collect subarrays of mce.
+--
+-- > mceClump 2 (mce [1,2,3,4]) == mce2 (mce2 1 2) (mce2 3 4)
+mceClump :: Int -> UGen -> UGen
+mceClump k = mce . map mce . Split.chunksOf k . mceChannels
+
 -- * Transform
 
 -- | Given /unmce/ function make halt mce transform.
 halt_mce_transform_f :: (a -> [a]) -> [a] -> [a]
 halt_mce_transform_f f l =
-    let (l',e) = fromMaybe (error "halt_mce_transform: null?") (B.sep_last l)
+    let (l',e) = fromMaybe (error "halt_mce_transform: null?") (Base.sep_last l)
     in l' ++ f e
 
 -- | The halt MCE transform, ie. lift channels of last input into list.
+--   This is not used by hsc3, but it is used by hsc3-forth and stsc3.
 --
 -- > halt_mce_transform [1,2,mce2 3 4] == [1,2,3,4]
 halt_mce_transform :: [UGen] -> [UGen]
@@ -187,69 +223,72 @@
 label :: String -> UGen
 label = Label_U . Label
 
--- | Unpack a label to a length prefixed list of 'Constant's.  There
--- is a special case for mce nodes, but it requires labels to be equal
--- length.  Properly, 'poll' would not unpack the label, it would be
--- done by the synthdef builder.
-unpackLabel :: UGen -> [UGen]
-unpackLabel u =
+{- | Unpack a label to a length prefixed list of 'Constant's.  There
+is a special case for mce nodes, but it requires labels to be equal
+length.  Properly, 'poll' would not unpack the label, it would be
+done by the synthdef builder.
+
+> unpackLabel False (label "/tmp")
+
+-}
+unpackLabel :: Bool -> UGen -> [UGen]
+unpackLabel length_prefix u =
     case u of
       Label_U (Label s) ->
           let q = fromEnum '?'
-              f c = if C.isAscii c then fromEnum c else q
+              f c = if Data.Char.isAscii c then fromEnum c else q
               s' = map (fromIntegral . f) s
-              n = fromIntegral (length s)
-          in n : s'
+          in if length_prefix then fromIntegral (length s) : s' else s'
       MCE_U m ->
-          let x = map unpackLabel (mceProxies m)
-          in if B.equal_length_p x
+          let x = map (unpackLabel length_prefix) (mceProxies m)
+          in if Base.equal_length_p x
              then map mce (transpose x)
              else error (show ("unpackLabel: mce length /=",x))
       _ -> error (show ("unpackLabel: non-label",u))
 
 -- * Envelope
 
--- | 'mce' of 'E.envelope_sc3_array'.
-envelope_to_ugen :: E.Envelope UGen -> UGen
+-- | 'mce' of 'Envelope.envelope_sc3_array'.
+envelope_to_ugen :: Envelope.Envelope UGen -> UGen
 envelope_to_ugen =
     let err = error "envGen: bad Envelope"
-    in mce . fromMaybe err . E.envelope_sc3_array
+    in mce . fromMaybe err . Envelope.envelope_sc3_array
 
--- | 'mce' of 'E.envelope_sc3_ienvgen_array'.
-envelope_to_ienvgen_ugen :: E.Envelope UGen -> UGen
+-- | 'mce' of 'Envelope.envelope_sc3_ienvgen_array'.
+envelope_to_ienvgen_ugen :: Envelope.Envelope UGen -> UGen
 envelope_to_ienvgen_ugen =
     let err = error "envGen: bad Envelope"
-    in mce . fromMaybe err . E.envelope_sc3_ienvgen_array
+    in mce . fromMaybe err . Envelope.envelope_sc3_ienvgen_array
 
 -- * Bitwise
 
--- | 'O.BitAnd'
+-- | 'Operator.BitAnd'
 bitAnd :: UGen -> UGen -> UGen
-bitAnd = mkBinaryOperator O.BitAnd undefined
+bitAnd = mkBinaryOperator Operator.BitAnd undefined
 
--- | 'O.BitOr'
+-- | 'Operator.BitOr'
 bitOr :: UGen -> UGen -> UGen
-bitOr = mkBinaryOperator O.BitOr undefined
+bitOr = mkBinaryOperator Operator.BitOr undefined
 
--- | 'O.BitXor'
+-- | 'Operator.BitXor'
 bitXOr :: UGen -> UGen -> UGen
-bitXOr = mkBinaryOperator O.BitXor undefined
+bitXOr = mkBinaryOperator Operator.BitXor undefined
 
--- | 'O.BitNot'
+-- | 'Operator.BitNot'
 bitNot :: UGen -> UGen
-bitNot = mkUnaryOperator O.BitNot undefined
+bitNot = mkUnaryOperator Operator.BitNot undefined
 
--- | 'O.ShiftLeft'
+-- | 'Operator.ShiftLeft'
 shiftLeft :: UGen -> UGen -> UGen
-shiftLeft = mkBinaryOperator O.ShiftLeft undefined
+shiftLeft = mkBinaryOperator Operator.ShiftLeft undefined
 
--- | 'O.ShiftRight'
+-- | 'Operator.ShiftRight'
 shiftRight :: UGen -> UGen -> UGen
-shiftRight = mkBinaryOperator O.ShiftRight undefined
+shiftRight = mkBinaryOperator Operator.ShiftRight undefined
 
--- | 'O.UnsignedShift'
+-- | 'Operator.UnsignedShift'
 unsignedShift :: UGen -> UGen -> UGen
-unsignedShift = mkBinaryOperator O.UnsignedShift undefined
+unsignedShift = mkBinaryOperator Operator.UnsignedShift undefined
 
 -- | 'shiftLeft' operator.
 (.<<.) :: UGen -> UGen -> UGen
@@ -258,3 +297,35 @@
 -- | 'shiftRight' operator.
 (.>>.) :: UGen -> UGen -> UGen
 (.>>.) = shiftRight
+
+-- * Rate Flow
+
+-- | Traverse graph rewriting audio rate nodes as control rate.
+rewriteUGenRates :: (Rate.Rate -> Bool) -> Rate.Rate -> UGen -> UGen
+rewriteUGenRates sel_f set_rt =
+  let f u = case u of
+              Primitive_U p -> let Primitive rt nm i o s z = p
+                               in Primitive_U (if sel_f rt then Primitive set_rt nm i o s z else p)
+              _ -> u
+  in ugenTraverse (const False) f -- requires endRewrite node (see rsc3-arf)
+
+-- | Traverse graph rewriting audio rate nodes as control rate.
+rewriteToControlRate :: UGen -> UGen
+rewriteToControlRate = rewriteUGenRates (== Rate.AR) Rate.KR
+
+-- | Traverse graph rewriting all nodes as demand rate.
+rewriteToDemandRate :: UGen -> UGen
+rewriteToDemandRate = rewriteUGenRates (const True) Rate.DR
+
+-- | Traverse graph rewriting audio and control nodes as initialisation rate.
+rewriteToInitialisationRate :: UGen -> UGen
+rewriteToInitialisationRate = rewriteUGenRates (`elem` [Rate.KR,Rate.AR]) Rate.IR
+
+-- | Select rewriting function given 'Rate.Rate'.
+rewriteToRate :: Rate.Rate -> UGen -> UGen
+rewriteToRate rt =
+  case rt of
+    Rate.KR -> rewriteToControlRate
+    Rate.DR -> rewriteToDemandRate
+    Rate.IR -> rewriteToInitialisationRate
+    Rate.AR -> error "rewriteToRate: AR?"
diff --git a/emacs/hsc3.el b/emacs/hsc3.el
--- a/emacs/hsc3.el
+++ b/emacs/hsc3.el
@@ -1,25 +1,28 @@
-;; Indentation and font locking is courtesy `haskell' mode.
-;; Inter-process communication is courtesy `comint' and `inf-haskell'.
+;; Indentation and font locking is courtesy `haskell' mode (debian=haskell-mode).
+;; Inter-process communication is courtesy `comint'.
 ;; Symbol at point acquisition is courtesy `thingatpt'.
 ;; Directory search facilities are courtesy `find-lisp'.
 
-(require 'scheme)
+(require 'haskell)
 (require 'comint)
 (require 'thingatpt)
 (require 'find-lisp)
-(require 'inf-haskell) ;; debian=haskell-mode
 
-(defvar hsc3-help-directory
-  nil
-  "*The directory containing the help files (default=nil).")
+(defcustom hsc3-buffer "*hsc3*"
+  "*The name of the hsc3 haskell process buffer."
+  :type 'string)
 
-(defvar sc3-help-directory
-  nil
+(defvar hsc3-interpreter (list "ghci")
+  "*The name of the haskell interpreter (default=\"ghci\").")
+
+(defvar hsc3-directory nil
+  "*The hsc3 directory (default=nil).")
+
+(defvar sc3-help-directory nil
   "*The directory containing the SC3 RTF help files (default=nil).")
 
-(defvar hsc3-literate-p
-  t
-  "*Flag to indicate if we are in literate mode (default=t).")
+(defvar hsc3-literate-p nil
+  "*Flag to indicate if we are in literate mode (default=nil).")
 
 (make-variable-buffer-local 'hsc3-literate-p)
 
@@ -32,21 +35,36 @@
         (list c)
       (cons c (hsc3-chunk-string n (substring s n))))))
 
-(defun hsc3-send-string (s)
-  (if (comint-check-proc inferior-haskell-buffer)
+(defun hsc3-send-line (s)
+  "Send string, with newline appended, to haskell."
+  (if (comint-check-proc hsc3-buffer)
       (let ((cs (hsc3-chunk-string 64 (concat s "\n"))))
         (mapcar
-         (lambda (c) (comint-send-string inferior-haskell-buffer c))
+         (lambda (c) (comint-send-string hsc3-buffer c))
          cs))
-    (error "no hsc3 process running?")))
+    (error "no hsc3 process?")))
 
-(defun hsc3-quit-haskell ()
-  "Quit haskell."
+(defun hsc3-send-layout-block (s)
+  "Send string to haskell using ghci layout block notation."
+  (hsc3-send-line (mapconcat 'identity (list ":{" s ":}") "\n")))
+
+(defun hsc3-send-text (str)
+  "If text spans multiple lines `hsc3-send-layout-block' else `hsc3-send-line'."
+  (if (string-match "\n" str)
+      (hsc3-send-layout-block str)
+    (hsc3-send-line str)))
+
+(defun hsc3-send-text-fn (fn str)
+  "Send text with fn prefixed."
+  (hsc3-send-text (if (string-match "\n" str) (concat fn " $\n" str) (concat fn " $ " str))))
+
+(defun hsc3-send-quit ()
+  "Send :quit instruction to haskell."
   (interactive)
-  (hsc3-send-string ":quit"))
+  (hsc3-send-line ":quit"))
 
 (defun hsc3-unlit (s)
-  "Remove bird literate marks and preceding comment marker"
+  "Remove Bird-literate marks."
    (replace-regexp-in-string "^[> ]* ?" "" s))
 
 (defun hsc3-uncomment (s)
@@ -62,7 +80,7 @@
   "Lookup up the name at point in the hsc3 help files."
   (interactive)
   (let ((rgx (concat "^" (thing-at-point 'symbol) "\\.help\\.l?hs$")))
-    (hsc3-find-files hsc3-help-directory rgx)))
+    (hsc3-find-files (concat hsc3-directory "Help/") rgx)))
 
 (defun hsc3-sc3-help ()
   "Lookup up the name at point in the SC3 (RTF) help files."
@@ -70,223 +88,364 @@
   (let ((rgx (concat "^" (thing-at-point 'symbol) "\\\(.help\\\)?.rtf$")))
     (hsc3-find-files sc3-help-directory rgx)))
 
+(defun hsc3-sc3-help-scdoc ()
+  "Lookup up the UGen name at point in the SC3 (SCDOC) help files."
+  (interactive)
+  (hsc3-send-line
+   (format
+    "Sound.SC3.Common.Help.sc3_scdoc_help_open False (Sound.SC3.Common.Help.sc3_scdoc_help_path (Sound.SC3.UGen.DB.ugen_sc3_name \"%s\"))"
+    (thing-at-point 'symbol))))
+
 (defun hsc3-ugen-summary ()
-  "Lookup up the UGen at point in hsc3-db"
+  "Lookup up the UGen at point in hsc3-db."
   (interactive)
-  (hsc3-send-string
-      (format "Sound.SC3.UGen.DB.ugenSummary \"%s\""
-              (thing-at-point 'symbol))))
+  (hsc3-send-line
+   (format "Sound.SC3.UGen.DB.ugen_summary_wr \"%s\"" (thing-at-point 'symbol))))
 
+(defun hsc3-ugen-default-param ()
+  "Insert the default UGen parameters (arguments) for the UGen before <point>."
+  (interactive)
+  (let ((p (format "hsc3-help ugen-default-param %s" (thing-at-point 'symbol))))
+    (insert " ")
+    (insert (hsc3-remove-trailing-newline (shell-command-to-string p)))))
+
+(defun hsc3-ugen-control-param ()
+  "Insert control UGen parameters (arguments) for the UGen before <point>."
+  (interactive)
+  (let ((p (format "hsc3-help ugen-control-param %s" (thing-at-point 'symbol))))
+    (insert (hsc3-remove-trailing-newline (shell-command-to-string p)))))
+
+(defun hsc3-ugen-control-param-let (ugen-name)
+  "Generate let bindings to controls for all UGen param (printed in *hsc3* buffer)."
+  (interactive "SUGen Name: ")
+  (hsc3-send-line
+   (format "Sound.SC3.UGen.DB.ugen_control_param_wr \"%s\"" ugen-name)))
+
 (defun hsc3-remove-trailing-newline (s)
+  "Delete trailing newlines from string."
   (replace-regexp-in-string "\n\\'" "" s))
 
 (defun hsc3-cd ()
   "Change directory at ghci to current value of 'default-directory'."
   (interactive)
-  (hsc3-send-string (format ":cd %s" default-directory)))
+  (hsc3-send-line (format ":cd %s" default-directory)))
 
-(defun hsc3-load-buffer ()
-  "Load the current buffer."
+(defun hsc3-load-current-file ()
+  "Send :load and the current buffer file name to haskell."
   (interactive)
   (save-buffer)
   (hsc3-see-haskell)
-  (hsc3-send-string (format ":load \"%s\"" buffer-file-name)))
+  (hsc3-send-line (format ":load \"%s\"" buffer-file-name)))
 
-(defun hsc3-run-line ()
-  "Send the current line to the interpreter."
+(defun hsc3-send-current-line ()
+  "Send the current line to haskell."
   (interactive)
-  (let* ((s (buffer-substring (line-beginning-position)
-			      (line-end-position)))
+  (let* ((s (buffer-substring-no-properties
+             (line-beginning-position)
+             (line-end-position)))
 	 (s* (if hsc3-literate-p
 		 (hsc3-unlit s)
 	       (hsc3-uncomment s))))
-    (hsc3-send-string s*)))
+    (hsc3-send-line s*)))
 
-(defun hsc3-run-main ()
-  "Run current main."
+(defun hsc3-send-main ()
+  "Send main to haskell."
   (interactive)
-  (hsc3-send-string "main"))
+  (hsc3-send-line "main"))
 
+(defun hsc3-region-string ()
+  "Get current region as string."
+  (buffer-substring-no-properties (region-beginning) (region-end)))
+
+(defun hsc3-send-region ()
+  "Send region text to interpreter."
+  (interactive)
+  (hsc3-send-text (hsc3-region-string)))
+
+(defun hsc3-send-region-fn (fn)
+  "Send region text with haskell function to be applied."
+  (hsc3-send-text-fn fn (hsc3-region-string)))
+
+(defun hsc3-play-region (k)
+  "Play region at scsynth.  The (one-indexed) prefix agument indicates which server to send to."
+  (interactive "p")
+  (hsc3-send-region-fn
+   (format
+    "Sound.SC3.audition_at (\"%s\",%d + %d) Sound.SC3.def_play_opt"
+    hsc3-server-host hsc3-server-port (- k 1))))
+
+(defcustom hsc3-draw-command "draw"
+  "*The un-qualified name of the draw function to use at `hsc3-draw-region'."
+  :type 'string)
+
+(defun hsc3-draw-region ()
+  "Draw region UGen graph."
+  (interactive)
+  (hsc3-send-region-fn (format "Sound.SC3.UGen.Dot.%s $ out 0 " hsc3-draw-command)))
+
+(defun hsc3-dump-ugens-region ()
+  "Print region UGen graph."
+  (interactive)
+  (hsc3-send-region-fn "Sound.SC3.ugen_dump_ugens"))
+
+(defun hsc3-ui-region ()
+  "UI for region UGen graph."
+  (interactive)
+  (let ((str (hsc3-region-string)))
+    (hsc3-send-region-fn "Sound.SC3.UI.SCLang.Control.ugen_ui_run \"ui\" 1")))
+
+(defun hsc3-pp-html-region ()
+  "HTML pretty-printer and viewer for region UGen graph."
+  (interactive)
+  (let ((str (hsc3-region-string)))
+    (hsc3-send-region-fn "Sound.SC3.UI.HTML.ugen_graph_pp_html_wv")))
+
+(defun hsc3-pp-forth ()
+  "Forth PP"
+  (interactive)
+  (hsc3-send-region-fn "Sound.SC3.UGen.DB.PP.ugen_graph_forth_pp (False,False)"))
+
+(defun hsc3-pp-smalltalk ()
+  "Pretty print UGen as Smalltalk"
+  (interactive)
+  (hsc3-send-region-fn "Sound.SC3.UGen.DB.PP.Graph.ugen_graph_smalltalk_pp"))
+
 (defun hsc3-id-rewrite-region ()
+  "Run hsc3-id-rewrite on region."
   (interactive)
-  (shell-command-on-region
-   (region-beginning)
-   (region-end)
-   "hsc3-id-rewrite"
-   nil
-   t))
+  (shell-command-on-region (region-beginning) (region-end) "hsc3-rw id-rewrite" nil t))
 
-(defun hsc3-id-rewrite ()
+(defun hsc3-id-rewrite-buffer ()
+  "Run hsc3-id-rewrite on buffer."
   (interactive)
-  (shell-command-on-region (point-min) (point-max) "hsc3-id-rewrite" nil t))
+  (shell-command-on-region (point-min) (point-max) "hsc3-rw id-rewrite" nil t))
 
-(defun hsc3-interrupt-haskell ()
-  "Interrupt haskell interpreter"
+(defun hsc3-uparam-rewrite ()
+  "Rewrite uparam notation inplace."
   (interactive)
-  (if (comint-check-proc inferior-haskell-buffer)
-      (with-current-buffer inferior-haskell-buffer
-        (interrupt-process (get-buffer-process (current-buffer))))
-    (error "no haskell interpreter process running?")))
+  (shell-command-on-region (region-beginning) (region-end) "hsc3-rw uparam expand" nil t))
 
+(defcustom hsc3-server-host "127.0.0.1"
+  "The host that scsynth is listening at"
+  :type 'string)
+
+(defcustom hsc3-server-port 57110
+  "The port that scsynth is listening at"
+  :type 'integer)
+
+(defun hsc3-with-sc3 (txt)
+  "withSC3 at `hsc3-server-host' and `hsc3-server-port'"
+  (hsc3-send-line
+   (format "Sound.SC3.withSC3At (\"%s\",%d) %s" hsc3-server-host hsc3-server-port txt)))
+
 (defun hsc3-reset-scsynth ()
-  "Reset scsynth"
+  "Send SC3 reset instruction to haskell."
   (interactive)
-  (hsc3-send-string "Sound.SC3.withSC3 Sound.SC3.reset"))
+  (hsc3-with-sc3 "Sound.SC3.reset"))
 
+(defun hsc3-start-haskell ()
+  "Start the hsc3 haskell process.
+
+If `hsc3-interpreter' is not already a subprocess it is
+started and a new window is created to display the results of
+evaluating hsc3 expressions.  Input and output is via `hsc3-buffer'."
+  (interactive)
+  (if (comint-check-proc hsc3-buffer)
+      (hsc3-see-haskell)
+    (apply
+     'make-comint
+     "hsc3"
+     (car hsc3-interpreter)
+     nil
+     (cdr hsc3-interpreter))
+    (hsc3-see-haskell)))
+
+(defun hsc3-interrupt-haskell ()
+  "Interupt haskell."
+  (interactive)
+  (interrupt-process hsc3-buffer comint-ptyp))
+
 (defun hsc3-stop ()
-  "Interrupt haskell interpreter & reset scsynth"
+  "Interrupt haskell & reset scsynth."
   (interactive)
   (progn
     (hsc3-interrupt-haskell)
     (sleep-for 0.15)
     (hsc3-reset-scsynth)))
 
-(defun hsc3-status-scsynth ()
-  "Status"
+(defun hsc3-server-status ()
+  "Send serverStatus request to haskell."
   (interactive)
-  (hsc3-send-string
-   "Sound.SC3.withSC3 Sound.SC3.serverStatus >>= mapM putStrLn"))
+  (hsc3-with-sc3 "Sound.SC3.serverStatus >>= mapM putStrLn"))
 
 (defun hsc3-quit-scsynth ()
   "Quit"
   (interactive)
-  (hsc3-send-string
-   "Sound.SC3.withSC3 (Sound.SC3.send Sound.SC3.quit)"))
+  (hsc3-with-sc3 "(Sound.OSC.sendMessage Sound.SC3.quit)"))
 
-(defun hsc3-update-hsc3-tags ()
-  "Update hsc3 TAGS file, must be run from hsc3 directory."
+(defcustom hsc3-seq-degree 2
+  "*Number of scsynth processes to address at -seq operations (default=2)."
+  :type 'integer)
+
+(defun hsc3-server-status-seq ()
+  "Send serverStatus request to haskell."
   (interactive)
-  (if (and (executable-find "hasktags") (file-exists-p "hsc3.cabal"))
-      (call-process-shell-command
-       "find Sound . -name '*.hs' | xargs hasktags -e"
-       nil
-       nil)
-    (error "no hasktags binary or not at hsc3 directory?")))
+  (hsc3-send-line
+   (format
+    "Sound.SC3.withSC3At_seq (\"%s\",%d) %d Sound.SC3.serverStatus >>= mapM putStrLn . concat"
+    hsc3-server-host hsc3-server-port hsc3-seq-degree)))
 
-(defun hsc3-audition-graph ()
-  "Audition the UGen graph at point."
+(defun hsc3-play-region-seq ()
+  "hsc3-play-region-opt with auditionAt_seq hsc3-seq-degree."
   (interactive)
-  (hsc3-send-string
-   (concat "Sound.SC3.audition " (thing-at-point 'symbol))))
+  (hsc3-send-region-fn
+   (format
+    "Sound.SC3.audition_at_seq (\"%s\",%d) def_play_opt %d"
+    hsc3-server-host hsc3-server-port hsc3-seq-degree)))
 
-(defun hsc3-audition-graph-m ()
-  "Audition the (monadic) UGen graph at point."
+(defun hsc3-reset-scsynth-seq ()
+  "Send SC3 reset instruction to haskell."
   (interactive)
-  (hsc3-send-string
-   (concat "Sound.SC3.audition =<<" (thing-at-point 'symbol))))
+  (hsc3-send-line
+   (format
+    "Sound.SC3.withSC3At_seq_ (\"%s\",%d) %d Sound.SC3.reset"
+    hsc3-server-host hsc3-server-port hsc3-seq-degree)))
 
-(defun hsc3-audition-pattern ()
-  "Audition the pattern at point."
+(defun hsc3-dmenu-ugen-core ()
+  "dmenu of categorised core SC3 UGens"
   (interactive)
-  (hsc3-send-string
-   (concat "Sound.SC3.Lang.Pattern.paudition " (thing-at-point 'symbol))))
+  (insert (shell-command-to-string "hsc3-db dmenu ugen core")))
 
-(defun hsc3-draw-graph ()
-  "Draw the UGen graph at point."
+(defun hsc3-dmenu-ugen-ext ()
+  "dmenu of categorised external SC3 UGens"
   (interactive)
-  (hsc3-send-string
-   (concat "Sound.SC3.UGen.Dot.draw " (thing-at-point 'symbol))))
+  (insert (shell-command-to-string "hsc3-db dmenu ugen external")))
 
-(defun hsc3-draw-graph-plain ()
-  "Draw the UGen graph at point (plain)."
+(defun hsc3-dmenu-ugen-all ()
+  "dmenu of all categorised SC3 UGens"
   (interactive)
-  (hsc3-send-string
-   (concat "Sound.SC3.UGen.Dot.draw_plain " (thing-at-point 'symbol))))
+  (insert (shell-command-to-string "hsc3-db dmenu ugen all")))
 
-(defun hsc3-draw-graph-m ()
-  "Draw the (monadic) UGen graph at point."
+(defun hsc3-xmenu-ugen-core ()
+  "xmenu of categorised core SC3 UGens"
   (interactive)
-  (hsc3-send-string
-   (concat "Sound.SC3.UGen.Dot.draw =<<" (thing-at-point 'symbol))))
+  (insert (shell-command-to-string "hsc3-db xmenu core")))
 
+(defun hsc3-xmenu-ugen-ext ()
+  "xmenu of categorised external SC3 UGens"
+  (interactive)
+  (insert (shell-command-to-string "hsc3-db xmenu external")))
+
+(defun hsc3-xmenu-ugen-all ()
+  "xmenu of categorised core and external SC3 UGens."
+  (interactive)
+  (insert (shell-command-to-string "cat ~/sw/hsc3-db/lib/xmenu/ugen-core-tree.text ~/sw/hsc3-db/lib/xmenu/nil.text ~/sw/hsc3-db/lib/xmenu/ugen-ext-tree.text | xmenu")))
+
+(defun hsc3-load-file (fn)
+  "Load named file as string"
+  (with-temp-buffer
+    (insert-file-contents fn)
+    (buffer-substring-no-properties
+       (point-min)
+       (point-max))))
+
+(defun hsc3-unload-all-modules ()
+  "Unload all modules and delete all bindings at ghci.
+
+   :load without any arguments unloads all the currently loaded modules and bindings"
+  (interactive)
+  (hsc3-send-line ":load"))
+
+(defun hsc3-import-standard-modules ()
+  "Send standard set of hsc3 and related module imports to haskell."
+  (interactive)
+  (mapc
+   'hsc3-send-line
+   (split-string (hsc3-load-file (concat hsc3-directory "lib/hsc3-std-imports.hs")) "\n")))
+
 (defun hsc3-set-prompt ()
-  "Set ghci prompt to hsc3."
+  "Set ghci prompt to hsc3> and the continuation prompt to nil."
   (interactive)
-  (hsc3-send-string ":set prompt \"hsc3> \""))
+  (hsc3-send-line ":set prompt \"hsc3> \"")
+  (hsc3-send-line ":set prompt-cont \"\""))
 
 (defun hsc3-see-haskell ()
  "Show haskell output."
  (interactive)
- (let* ((p (inferior-haskell-process))
-        (b (process-buffer p)))
+  (if (not (comint-check-proc hsc3-buffer))
+      (hsc3-start-haskell)
    (hsc3-set-prompt)
+   (hsc3-import-standard-modules)
    (delete-other-windows)
    (split-window-vertically)
-   (with-current-buffer b
+   (with-current-buffer hsc3-buffer
      (let ((window (display-buffer (current-buffer))))
        (goto-char (point-max))
        (save-selected-window
          (set-window-point window (point-max)))))))
 
+(defun hsc3-ugen-smalltalk ()
+  "Insert hcs3-help ugen-smalltalk of thing-at-point"
+  (interactive)
+  (insert (shell-command-to-string (concat "hsc3-help ugen-smalltalk " (thing-at-point 'symbol)))))
+
 (defvar hsc3-mode-map nil
   "Haskell SuperCollider keymap.")
 
 (defun hsc3-mode-keybindings (map)
   "Haskell SuperCollider keybindings."
-  (define-key map [?\C-c ?<] 'hsc3-load-buffer)
-  (define-key map [?\C-c ?>] 'hsc3-see-haskell)
-  (define-key map [?\C-c ?\C-c] 'hsc3-run-line)
-  (define-key map [?\C-c ?\C-h] 'hsc3-help)
-  (define-key map [?\C-c ?\C-a] 'hsc3-audition-graph)
-  (define-key map [?\C-c ?\M-a] 'hsc3-audition-graph-m)
-  (define-key map (kbd "C-c p") 'hsc3-audition-pattern)
-  (define-key map (kbd "C-c C-g") 'hsc3-draw-graph)
-  (define-key map (kbd "C-c C-S-g") 'hsc3-draw-graph-plain)
-  (define-key map [?\C-c ?\M-g] 'hsc3-draw-graph-m)
-  (define-key map [?\C-c ?\C-j] 'hsc3-sc3-help)
-  ;(define-key map [?\C-c ?\C-/] 'hsc3-sc3-html-help)
-  (define-key map [?\C-c ?i] 'hsc3-interrupt-haskell)
-  (define-key map [?\C-c ?\C-k] 'hsc3-reset-scsynth)
-  (define-key map [?\C-c ?\C-m] 'hsc3-run-main)
-  (define-key map [?\C-c ?\C-p] 'hsc3-status-scsynth)
-  (define-key map [?\C-c ?\C-q] 'hsc3-quit-haskell)
-  (define-key map [?\C-c ?\C-0] 'hsc3-quit-scsynth)
-  (define-key map [?\C-c ?\C-.] 'hsc3-stop)
-  (define-key map [?\C-c ?\C-s] 'hsc3-stop) ; ie. sclang-mode key
-  (define-key map [?\C-c ?\C-u] 'hsc3-ugen-summary))
+  (define-key map (kbd "C-c <") 'hsc3-load-current-file)
+  (define-key map (kbd "C-c >") 'hsc3-see-haskell)
+  (define-key map (kbd "C-c C-c") 'hsc3-send-current-line)
+  (define-key map (kbd "C-c C-h") 'hsc3-help)
+  (define-key map (kbd "C-c C-r") 'hsc3-send-region)
+  (define-key map (kbd "C-c C-a") 'hsc3-play-region)
+  (define-key map (kbd "C-c C-S-a") 'hsc3-play-region-seq)
+  (define-key map (kbd "C-c C-g") 'hsc3-draw-region)
+  (define-key map (kbd "C-c C-d") 'hsc3-dump-ugens-region)
+  (define-key map (kbd "C-c C-v") 'hsc3-ui-region)
+  (define-key map (kbd "C-c C-j") 'hsc3-sc3-help)
+  (define-key map (kbd "C-c C-i") 'hsc3-interrupt-haskell)
+  (define-key map (kbd "C-c C-k") 'hsc3-reset-scsynth)
+  (define-key map (kbd "C-c C-S-k") 'hsc3-reset-scsynth-seq)
+  (define-key map (kbd "C-c C-m") 'hsc3-send-main)
+  (define-key map (kbd "C-c C-p") 'hsc3-server-status)
+  (define-key map (kbd "C-c C-S-p") 'hsc3-server-status-seq)
+  (define-key map (kbd "C-c C-q") 'hsc3-send-quit)
+  (define-key map (kbd "C-c C-.") 'hsc3-stop)
+  (define-key map (kbd "C-c C-s") 'hsc3-dmenu-ugen-all)
+  (define-key map (kbd "C-c C-S-s") 'hsc3-xmenu-ugen-all)
+  (define-key map (kbd "C-c C-u") 'hsc3-ugen-summary))
 
 (defun hsc3-mode-menu (map)
-  "Haskell SuperCollider menu."
-  (define-key map [menu-bar hsc3]
-    (cons "Haskell-SuperCollider" (make-sparse-keymap "Haskell-SuperCollider")))
-  (define-key map [menu-bar hsc3 help]
-    (cons "Help" (make-sparse-keymap "Help")))
-  (define-key map [menu-bar hsc3 help hsc3]
-    '("HSC3 Help" . hsc3-help))
-  (define-key map [menu-bar hsc3 help ugen]
-    '("UGen Summary" . hsc3-ugen-summary))
-  ;(define-key map [menu-bar hsc3 help sc3-server]
-  ;  '("SuperCollider Server Command help" . hsc3-sc3-server-help))
-  (define-key map [menu-bar hsc3 help sc3-ugen]
-    '("SC3 Help" . hsc3-sc3-ugen-help))
-  (define-key map [menu-bar hsc3 expression]
-    (cons "Expression" (make-sparse-keymap "Expression")))
-  (define-key map [menu-bar hsc3 expression stop]
-    '("Stop (interrupt and reset)" . hsc3-stop))
-  (define-key map [menu-bar hsc3 expression change-directory]
-    '("Change directory" . hsc3-cd))
-  (define-key map [menu-bar hsc3 expression load-buffer]
-    '("Load buffer" . hsc3-load-buffer))
-  (define-key map [menu-bar hsc3 expression run-main]
-    '("Run main" . hsc3-run-main))
-  (define-key map [menu-bar hsc3 expression run-line]
-    '("Run line" . hsc3-run-line))
-  (define-key map [menu-bar hsc3 scsynth]
-    (cons "SCSynth" (make-sparse-keymap "SCSynth")))
-  (define-key map [menu-bar hsc3 scsynth quit]
-    '("Quit scsynth" . hsc3-quit-scsynth))
-  (define-key map [menu-bar hsc3 scsynth status]
-    '("Display status" . hsc3-status-scsynth))
-  (define-key map [menu-bar hsc3 scsynth reset]
-    '("Reset scsynth" . hsc3-reset-scsynth))
-  (define-key map [menu-bar hsc3 haskell]
-    (cons "Haskell" (make-sparse-keymap "Haskell")))
-  (define-key map [menu-bar hsc3 haskell quit-haskell]
-    '("Quit haskell" . hsc3-quit-haskell))
-  (define-key map [menu-bar hsc3 haskell interrupt-haskell]
-    '("Interrupt haskell" . hsc3-interrupt-haskell))
-  (define-key map [menu-bar hsc3 haskell see-haskell]
-    '("See haskell" . hsc3-see-haskell)))
+  "Haskell SuperCollider Menu"
+  (define-key map [menu-bar hsc3] (cons "Haskell-SuperCollider" (make-sparse-keymap "Haskell-SuperCollider")))
+  (define-key map [menu-bar hsc3 help] (cons "Help" (make-sparse-keymap "Help")))
+  (define-key map [menu-bar hsc3 help hsc3] '("HSC3 Help" . hsc3-help))
+  (define-key map [menu-bar hsc3 help ugen] '("UGen Summary" . hsc3-ugen-summary))
+  (define-key map [menu-bar hsc3 help sc3-ugen] '("SC3 Help" . hsc3-sc3-ugen-help))
+  (define-key map [menu-bar hsc3 expression] (cons "Expression" (make-sparse-keymap "Expression")))
+  (define-key map [menu-bar hsc3 expression stop] '("Stop (interrupt and reset)" . hsc3-stop))
+  (define-key map [menu-bar hsc3 expression change-directory] '("Change directory" . hsc3-cd))
+  (define-key map [menu-bar hsc3 expression import-standard-modules] '("Import standard modules" . hsc3-import-standard-modules))
+  (define-key map [menu-bar hsc3 expression server-status] '("Print server status" . hsc3-server-status))
+  (define-key map [menu-bar hsc3 expression send-main] '("Send main" . hsc3-send-main))
+  (define-key map [menu-bar hsc3 expression send-region] '("Send region" . hsc3-send-region))
+  (define-key map [menu-bar hsc3 expression send-current-line] '("Send current line" . hsc3-send-current-line))
+  (define-key map [menu-bar hsc3 expression id-rewrite-region] '("ID-rewrite region" . hsc3-id-rewrite-region))
+  (define-key map [menu-bar hsc3 expression load-current-file] '("Load current file" . hsc3-load-current-file))
+  (define-key map [menu-bar hsc3 expression dmenu-ugen] '("UGen dmenu" . hsc3-dmenu-ugen-all))
+  (define-key map [menu-bar hsc3 expression xmenu-ugen] '("UGen xmenu" . hsc3-xmenu-ugen-all))
+  (define-key map [menu-bar hsc3 expression draw-region] '("Draw region" . hsc3-draw-region))
+  (define-key map [menu-bar hsc3 expression play-region] '("Play region" . hsc3-play-region))
+  (define-key map [menu-bar hsc3 scsynth] (cons "SCSynth" (make-sparse-keymap "SCSynth")))
+  (define-key map [menu-bar hsc3 scsynth quit] '("Quit scsynth" . hsc3-quit-scsynth))
+  (define-key map [menu-bar hsc3 scsynth status] '("Display status" . hsc3-status-scsynth))
+  (define-key map [menu-bar hsc3 scsynth reset] '("Reset scsynth" . hsc3-reset-scsynth))
+  (define-key map [menu-bar hsc3 haskell] (cons "Haskell" (make-sparse-keymap "Haskell")))
+  (define-key map [menu-bar hsc3 haskell quit-haskell] '("Quit haskell" . hsc3-quit-haskell))
+  (define-key map [menu-bar hsc3 haskell interrupt-haskell] '("Interrupt haskell" . hsc3-interrupt-haskell))
+  (define-key map [menu-bar hsc3 haskell see-haskell] '("See haskell" . hsc3-see-haskell)))
 
 (if hsc3-mode-map
     ()
@@ -310,7 +469,7 @@
   hsc3-mode
   haskell-mode
   "Haskell SuperCollider"
-  "Major mode for interacting with an inferior haskell process."
+  "Major mode for interacting with an inferior hsc3 process."
   (setq hsc3-literate-p nil)
   (turn-on-font-lock))
 
diff --git a/hsc3.cabal b/hsc3.cabal
--- a/hsc3.cabal
+++ b/hsc3.cabal
@@ -1,5 +1,5 @@
 Name:              hsc3
-Version:           0.18
+Version:           0.19
 Synopsis:          Haskell SuperCollider
 Description:       Haskell client for the SuperCollider synthesis server,
                    <http://audiosynth.com/>.
@@ -8,16 +8,16 @@
                    <http://rohandrape.net/t/hsc3-texts>.
 License:           GPL-3
 Category:          Sound
-Copyright:         (c) Rohan Drape and others, 2005-2020
+Copyright:         (c) Rohan Drape and others, 2005-2021
 Author:            Rohan Drape
 Maintainer:        rd@rohandrape.net
 Stability:         Experimental
 Homepage:          http://rohandrape.net/t/hsc3
-Tested-With:       GHC == 8.6.5
+Tested-With:       GHC == 8.8.4
 Build-Type:        Simple
 Cabal-Version:     >= 1.10
 
-Data-files:        README
+Data-files:        README.md
                    emacs/hsc3.el
                    Help/Server/*.help.lhs
                    Help/UGen/ix.md
@@ -29,10 +29,12 @@
                    binary,
                    bytestring,
                    containers,
+                   data-binary-ieee754,
                    data-ordlist,
                    directory,
                    filepath,
-                   hosc == 0.18.*,
+                   hosc == 0.19.*,
+                   mtl,
                    murmur-hash,
                    network,
                    process,
@@ -52,12 +54,14 @@
                    Sound.SC3.Common.Buffer.Vector
                    Sound.SC3.Common.Enum
                    Sound.SC3.Common.Envelope
+                   Sound.SC3.Common.Help
                    Sound.SC3.Common.Math
                    Sound.SC3.Common.Math.Filter
                    Sound.SC3.Common.Math.Filter.BEQ
                    Sound.SC3.Common.Math.Interpolate
                    Sound.SC3.Common.Math.Noise
                    Sound.SC3.Common.Math.Operator
+                   Sound.SC3.Common.Math.Warp
                    Sound.SC3.Common.Math.Window
                    Sound.SC3.Common.Monad
                    Sound.SC3.Common.Monad.Operators
@@ -74,6 +78,7 @@
                    Sound.SC3.Server.Graphdef
                    Sound.SC3.Server.Graphdef.Graph
                    Sound.SC3.Server.Graphdef.Read
+                   Sound.SC3.Server.Graphdef.Text
                    Sound.SC3.Server.FD
                    Sound.SC3.Server.Monad
                    Sound.SC3.Server.NRT
@@ -103,6 +108,7 @@
                    Sound.SC3.UGen.Bindings.HW.External.Zita
                    Sound.SC3.UGen.Enum
                    Sound.SC3.UGen.Envelope
+                   Sound.SC3.UGen.Event
                    Sound.SC3.UGen.Graph
                    Sound.SC3.UGen.Graph.Reconstruct
                    Sound.SC3.UGen.Graph.Transform
@@ -120,4 +126,4 @@
 
 Source-Repository  head
   Type:            git
-  Location:        https://github.com/rd--/hsc3.git
+  Location:        https://gitlab.com/rd--/hsc3
