diff --git a/Help/analog-bubbles.hs b/Help/analog-bubbles.hs
new file mode 100644
--- /dev/null
+++ b/Help/analog-bubbles.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+
+import Sound.SC3
+import Sound.SC3.UGen.Record
+import Sound.SC3.UGen.Record.CombN
+import Sound.SC3.UGen.Record.LFSaw
+import Sound.SC3.UGen.Record.Out
+import Sound.SC3.UGen.Record.SinOsc
+
+analog_bubbles :: UGen
+analog_bubbles =
+    let o = ugen LFSaw { rate = KR
+                       , freq = mce2 8 7.23
+                       , iphase = 0 } * 3 + 80
+        f = ugen LFSaw { rate = KR
+                       , freq = 0.4
+                       , iphase = 0 } * 24 + o
+        s = ugen SinOsc { rate = AR
+                        , freq = midiCPS f
+                        , phase = 0} * 0.04
+        c = ugen CombN { rate = AR
+                       , input = s
+                       , maxdelaytime = 0.2
+                       , delaytime = 0.2
+                       , decaytime = 4 }
+    in ugen Out { rate = AR
+                , bus = 0
+                , input = c }
+
+main :: IO ()
+main = audition analog_bubbles
diff --git a/Help/pitch.hs b/Help/pitch.hs
new file mode 100644
--- /dev/null
+++ b/Help/pitch.hs
@@ -0,0 +1,12 @@
+import Sound.SC3
+import Sound.SC3.UGen.Record
+import Sound.SC3.UGen.Record.Pitch as P
+
+main :: IO ()
+main = 
+    let x = mouseX KR 220 660 Linear 0.1
+        y = mouseY KR 0.05 0.25 Linear 0.1
+        s = saw AR x * y
+        a = amplitude KR s 0.05 0.05
+        MCE [f, _] = ugen P.pitch { P.input = s }
+    in audition (out 0 (mce [s * 0.25, sinOsc AR (f / 2) 0 * a]))
diff --git a/Makefile b/Makefile
new file mode 100644
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,13 @@
+all:
+	ghc -Wall mk/build.hs -e main
+
+clean:
+	rm -f Sound/SC3/UGen/Record/*.hs
+	rm -Rf dist
+
+module_list:
+	find Sound/SC3/UGen/Record -name "*.*hs" | \
+		sort | \
+		sed	-e "s/^/                   /" \
+			-e "s,/,\.,g" \
+			-e "s,.hs,," >> hsc3-rec.cabal
diff --git a/README b/README
new file mode 100644
--- /dev/null
+++ b/README
@@ -0,0 +1,8 @@
+hsc3-rec - haskell supercollider record variants
+
+provides record constructors for all unit generators that take at
+least one parameter.  requires the record field disambiguation present
+in ghc >= 6.10.1 to be practicable.
+
+(c) rohan drape and others, 2008
+    gpl, http://gnu.org/copyleft/
diff --git a/Setup.lhs b/Setup.lhs
new file mode 100644
--- /dev/null
+++ b/Setup.lhs
@@ -0,0 +1,3 @@
+#!/usr/bin/env runhaskell
+> import Distribution.Simple
+> main = defaultMain
diff --git a/Sound/SC3/UGen/Record.hs b/Sound/SC3/UGen/Record.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record.hs
@@ -0,0 +1,6 @@
+module Sound.SC3.UGen.Record where
+
+import Sound.SC3.UGen.UGen
+
+class Make a where
+    ugen :: a -> UGen
diff --git a/Sound/SC3/UGen/Record/A2K.hs b/Sound/SC3/UGen/Record/A2K.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/A2K.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.A2K where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data A2K = A2K {
+  input :: S.UGen
+  } deriving (Show)
+a2K :: A2K
+a2K = A2K {
+  input = 0.0
+  }
+mkA2K :: A2K -> S.UGen
+mkA2K (A2K  a') = S.mkOsc S.KR "A2K" [a'] 1
+instance Make A2K where
+  ugen = mkA2K
diff --git a/Sound/SC3/UGen/Record/APF.hs b/Sound/SC3/UGen/Record/APF.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/APF.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.APF where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data APF = APF {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen,
+  radius :: S.UGen
+  } deriving (Show)
+aPF :: APF
+aPF = APF {
+  rate = S.AR,
+  input = 0.0,
+  freq = 440.0,
+  radius = 0.8
+  }
+mkAPF :: APF -> S.UGen
+mkAPF (APF r a' b' c') = S.mkOsc r "APF" [a',b',c'] 1
+instance Make APF where
+  ugen = mkAPF
diff --git a/Sound/SC3/UGen/Record/AbstractIn.hs b/Sound/SC3/UGen/Record/AbstractIn.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/AbstractIn.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.AbstractIn where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data AbstractIn = AbstractIn {
+  maxSize :: S.UGen
+  } deriving (Show)
+abstractIn :: AbstractIn
+abstractIn = AbstractIn {
+  maxSize = 0.0
+  }
+mkAbstractIn :: AbstractIn -> S.UGen
+mkAbstractIn (AbstractIn  a') = S.mkOsc S.AR "AbstractIn" [a'] 1
+instance Make AbstractIn where
+  ugen = mkAbstractIn
diff --git a/Sound/SC3/UGen/Record/AbstractOut.hs b/Sound/SC3/UGen/Record/AbstractOut.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/AbstractOut.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.AbstractOut where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data AbstractOut = AbstractOut {
+  maxSize :: S.UGen
+  } deriving (Show)
+abstractOut :: AbstractOut
+abstractOut = AbstractOut {
+  maxSize = 0.0
+  }
+mkAbstractOut :: AbstractOut -> S.UGen
+mkAbstractOut (AbstractOut  a') = S.mkOsc S.AR "AbstractOut" [a'] 1
+instance Make AbstractOut where
+  ugen = mkAbstractOut
diff --git a/Sound/SC3/UGen/Record/AllpassC.hs b/Sound/SC3/UGen/Record/AllpassC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/AllpassC.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.AllpassC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data AllpassC = AllpassC {
+  rate :: S.Rate,
+  input :: S.UGen,
+  maxdelaytime :: S.UGen,
+  delaytime :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+allpassC :: AllpassC
+allpassC = AllpassC {
+  rate = S.AR,
+  input = 0.0,
+  maxdelaytime = 0.2,
+  delaytime = 0.2,
+  decaytime = 1.0
+  }
+mkAllpassC :: AllpassC -> S.UGen
+mkAllpassC (AllpassC r a' b' c' d') = S.mkOsc r "AllpassC" [a',b',c',d'] 1
+instance Make AllpassC where
+  ugen = mkAllpassC
diff --git a/Sound/SC3/UGen/Record/AllpassL.hs b/Sound/SC3/UGen/Record/AllpassL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/AllpassL.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.AllpassL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data AllpassL = AllpassL {
+  rate :: S.Rate,
+  input :: S.UGen,
+  maxdelaytime :: S.UGen,
+  delaytime :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+allpassL :: AllpassL
+allpassL = AllpassL {
+  rate = S.AR,
+  input = 0.0,
+  maxdelaytime = 0.2,
+  delaytime = 0.2,
+  decaytime = 1.0
+  }
+mkAllpassL :: AllpassL -> S.UGen
+mkAllpassL (AllpassL r a' b' c' d') = S.mkOsc r "AllpassL" [a',b',c',d'] 1
+instance Make AllpassL where
+  ugen = mkAllpassL
diff --git a/Sound/SC3/UGen/Record/AllpassN.hs b/Sound/SC3/UGen/Record/AllpassN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/AllpassN.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.AllpassN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data AllpassN = AllpassN {
+  rate :: S.Rate,
+  input :: S.UGen,
+  maxdelaytime :: S.UGen,
+  delaytime :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+allpassN :: AllpassN
+allpassN = AllpassN {
+  rate = S.AR,
+  input = 0.0,
+  maxdelaytime = 0.2,
+  delaytime = 0.2,
+  decaytime = 1.0
+  }
+mkAllpassN :: AllpassN -> S.UGen
+mkAllpassN (AllpassN r a' b' c' d') = S.mkOsc r "AllpassN" [a',b',c',d'] 1
+instance Make AllpassN where
+  ugen = mkAllpassN
diff --git a/Sound/SC3/UGen/Record/AmpComp.hs b/Sound/SC3/UGen/Record/AmpComp.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/AmpComp.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.AmpComp where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data AmpComp = AmpComp {
+  rate :: S.Rate,
+  freq :: S.UGen,
+  root :: S.UGen,
+  exp_ :: S.UGen
+  } deriving (Show)
+ampComp :: AmpComp
+ampComp = AmpComp {
+  rate = S.AR,
+  freq = 0.0,
+  root = 0.0,
+  exp_ = 0.3333
+  }
+mkAmpComp :: AmpComp -> S.UGen
+mkAmpComp (AmpComp r a' b' c') = S.mkOsc r "AmpComp" [a',b',c'] 1
+instance Make AmpComp where
+  ugen = mkAmpComp
diff --git a/Sound/SC3/UGen/Record/AmpCompA.hs b/Sound/SC3/UGen/Record/AmpCompA.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/AmpCompA.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.AmpCompA where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data AmpCompA = AmpCompA {
+  rate :: S.Rate,
+  freq :: S.UGen,
+  root :: S.UGen,
+  minAmp :: S.UGen,
+  rootAmp :: S.UGen
+  } deriving (Show)
+ampCompA :: AmpCompA
+ampCompA = AmpCompA {
+  rate = S.AR,
+  freq = 1000.0,
+  root = 0.0,
+  minAmp = 0.32,
+  rootAmp = 1.0
+  }
+mkAmpCompA :: AmpCompA -> S.UGen
+mkAmpCompA (AmpCompA r a' b' c' d') = S.mkOsc r "AmpCompA" [a',b',c',d'] 1
+instance Make AmpCompA where
+  ugen = mkAmpCompA
diff --git a/Sound/SC3/UGen/Record/Amplitude.hs b/Sound/SC3/UGen/Record/Amplitude.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Amplitude.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Amplitude where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Amplitude = Amplitude {
+  rate :: S.Rate,
+  input :: S.UGen,
+  attackTime :: S.UGen,
+  releaseTime :: S.UGen
+  } deriving (Show)
+amplitude :: Amplitude
+amplitude = Amplitude {
+  rate = S.AR,
+  input = 0.0,
+  attackTime = 0.01,
+  releaseTime = 0.01
+  }
+mkAmplitude :: Amplitude -> S.UGen
+mkAmplitude (Amplitude r a' b' c') = S.mkOsc r "Amplitude" [a',b',c'] 1
+instance Make Amplitude where
+  ugen = mkAmplitude
diff --git a/Sound/SC3/UGen/Record/BAllPass.hs b/Sound/SC3/UGen/Record/BAllPass.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BAllPass.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.BAllPass where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BAllPass = BAllPass {
+  input :: S.UGen,
+  freq :: S.UGen,
+  rq :: S.UGen
+  } deriving (Show)
+bAllPass :: BAllPass
+bAllPass = BAllPass {
+  input = 0.0,
+  freq = 1200.0,
+  rq = 1.0
+  }
+mkBAllPass :: BAllPass -> S.UGen
+mkBAllPass (BAllPass  a' b' c') = S.mkOsc S.AR "BAllPass" [a',b',c'] 1
+instance Make BAllPass where
+  ugen = mkBAllPass
diff --git a/Sound/SC3/UGen/Record/BBandPass.hs b/Sound/SC3/UGen/Record/BBandPass.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BBandPass.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.BBandPass where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BBandPass = BBandPass {
+  input :: S.UGen,
+  freq :: S.UGen,
+  bw :: S.UGen
+  } deriving (Show)
+bBandPass :: BBandPass
+bBandPass = BBandPass {
+  input = 0.0,
+  freq = 1200.0,
+  bw = 1.0
+  }
+mkBBandPass :: BBandPass -> S.UGen
+mkBBandPass (BBandPass  a' b' c') = S.mkOsc S.AR "BBandPass" [a',b',c'] 1
+instance Make BBandPass where
+  ugen = mkBBandPass
diff --git a/Sound/SC3/UGen/Record/BBandStop.hs b/Sound/SC3/UGen/Record/BBandStop.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BBandStop.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.BBandStop where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BBandStop = BBandStop {
+  input :: S.UGen,
+  freq :: S.UGen,
+  bw :: S.UGen
+  } deriving (Show)
+bBandStop :: BBandStop
+bBandStop = BBandStop {
+  input = 0.0,
+  freq = 1200.0,
+  bw = 1.0
+  }
+mkBBandStop :: BBandStop -> S.UGen
+mkBBandStop (BBandStop  a' b' c') = S.mkOsc S.AR "BBandStop" [a',b',c'] 1
+instance Make BBandStop where
+  ugen = mkBBandStop
diff --git a/Sound/SC3/UGen/Record/BEQSuite.hs b/Sound/SC3/UGen/Record/BEQSuite.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BEQSuite.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.BEQSuite where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BEQSuite = BEQSuite {
+  maxSize :: S.UGen
+  } deriving (Show)
+bEQSuite :: BEQSuite
+bEQSuite = BEQSuite {
+  maxSize = 0.0
+  }
+mkBEQSuite :: BEQSuite -> S.UGen
+mkBEQSuite (BEQSuite  a') = S.mkOsc S.AR "BEQSuite" [a'] 1
+instance Make BEQSuite where
+  ugen = mkBEQSuite
diff --git a/Sound/SC3/UGen/Record/BHiPass.hs b/Sound/SC3/UGen/Record/BHiPass.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BHiPass.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.BHiPass where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BHiPass = BHiPass {
+  input :: S.UGen,
+  freq :: S.UGen,
+  rq :: S.UGen
+  } deriving (Show)
+bHiPass :: BHiPass
+bHiPass = BHiPass {
+  input = 0.0,
+  freq = 1200.0,
+  rq = 1.0
+  }
+mkBHiPass :: BHiPass -> S.UGen
+mkBHiPass (BHiPass  a' b' c') = S.mkOsc S.AR "BHiPass" [a',b',c'] 1
+instance Make BHiPass where
+  ugen = mkBHiPass
diff --git a/Sound/SC3/UGen/Record/BHiShelf.hs b/Sound/SC3/UGen/Record/BHiShelf.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BHiShelf.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BHiShelf where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BHiShelf = BHiShelf {
+  input :: S.UGen,
+  freq :: S.UGen,
+  rs :: S.UGen,
+  db :: S.UGen
+  } deriving (Show)
+bHiShelf :: BHiShelf
+bHiShelf = BHiShelf {
+  input = 0.0,
+  freq = 1200.0,
+  rs = 1.0,
+  db = 0.0
+  }
+mkBHiShelf :: BHiShelf -> S.UGen
+mkBHiShelf (BHiShelf  a' b' c' d') = S.mkOsc S.AR "BHiShelf" [a',b',c',d'] 1
+instance Make BHiShelf where
+  ugen = mkBHiShelf
diff --git a/Sound/SC3/UGen/Record/BLowPass.hs b/Sound/SC3/UGen/Record/BLowPass.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BLowPass.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.BLowPass where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BLowPass = BLowPass {
+  input :: S.UGen,
+  freq :: S.UGen,
+  rq :: S.UGen
+  } deriving (Show)
+bLowPass :: BLowPass
+bLowPass = BLowPass {
+  input = 0.0,
+  freq = 1200.0,
+  rq = 1.0
+  }
+mkBLowPass :: BLowPass -> S.UGen
+mkBLowPass (BLowPass  a' b' c') = S.mkOsc S.AR "BLowPass" [a',b',c'] 1
+instance Make BLowPass where
+  ugen = mkBLowPass
diff --git a/Sound/SC3/UGen/Record/BLowShelf.hs b/Sound/SC3/UGen/Record/BLowShelf.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BLowShelf.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BLowShelf where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BLowShelf = BLowShelf {
+  input :: S.UGen,
+  freq :: S.UGen,
+  rs :: S.UGen,
+  db :: S.UGen
+  } deriving (Show)
+bLowShelf :: BLowShelf
+bLowShelf = BLowShelf {
+  input = 0.0,
+  freq = 1200.0,
+  rs = 1.0,
+  db = 0.0
+  }
+mkBLowShelf :: BLowShelf -> S.UGen
+mkBLowShelf (BLowShelf  a' b' c' d') = S.mkOsc S.AR "BLowShelf" [a',b',c',d'] 1
+instance Make BLowShelf where
+  ugen = mkBLowShelf
diff --git a/Sound/SC3/UGen/Record/BPF.hs b/Sound/SC3/UGen/Record/BPF.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BPF.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BPF where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BPF = BPF {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen,
+  rq :: S.UGen
+  } deriving (Show)
+bPF :: BPF
+bPF = BPF {
+  rate = S.AR,
+  input = 0.0,
+  freq = 440.0,
+  rq = 1.0
+  }
+mkBPF :: BPF -> S.UGen
+mkBPF (BPF r a' b' c') = S.mkOsc r "BPF" [a',b',c'] 1
+instance Make BPF where
+  ugen = mkBPF
diff --git a/Sound/SC3/UGen/Record/BPZ2.hs b/Sound/SC3/UGen/Record/BPZ2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BPZ2.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.BPZ2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BPZ2 = BPZ2 {
+  rate :: S.Rate,
+  input :: S.UGen
+  } deriving (Show)
+bPZ2 :: BPZ2
+bPZ2 = BPZ2 {
+  rate = S.AR,
+  input = 0.0
+  }
+mkBPZ2 :: BPZ2 -> S.UGen
+mkBPZ2 (BPZ2 r a') = S.mkOsc r "BPZ2" [a'] 1
+instance Make BPZ2 where
+  ugen = mkBPZ2
diff --git a/Sound/SC3/UGen/Record/BPeakEQ.hs b/Sound/SC3/UGen/Record/BPeakEQ.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BPeakEQ.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BPeakEQ where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BPeakEQ = BPeakEQ {
+  input :: S.UGen,
+  freq :: S.UGen,
+  rq :: S.UGen,
+  db :: S.UGen
+  } deriving (Show)
+bPeakEQ :: BPeakEQ
+bPeakEQ = BPeakEQ {
+  input = 0.0,
+  freq = 1200.0,
+  rq = 1.0,
+  db = 0.0
+  }
+mkBPeakEQ :: BPeakEQ -> S.UGen
+mkBPeakEQ (BPeakEQ  a' b' c' d') = S.mkOsc S.AR "BPeakEQ" [a',b',c',d'] 1
+instance Make BPeakEQ where
+  ugen = mkBPeakEQ
diff --git a/Sound/SC3/UGen/Record/BRF.hs b/Sound/SC3/UGen/Record/BRF.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BRF.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BRF where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BRF = BRF {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen,
+  rq :: S.UGen
+  } deriving (Show)
+bRF :: BRF
+bRF = BRF {
+  rate = S.AR,
+  input = 0.0,
+  freq = 440.0,
+  rq = 1.0
+  }
+mkBRF :: BRF -> S.UGen
+mkBRF (BRF r a' b' c') = S.mkOsc r "BRF" [a',b',c'] 1
+instance Make BRF where
+  ugen = mkBRF
diff --git a/Sound/SC3/UGen/Record/BRZ2.hs b/Sound/SC3/UGen/Record/BRZ2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BRZ2.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.BRZ2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BRZ2 = BRZ2 {
+  rate :: S.Rate,
+  input :: S.UGen
+  } deriving (Show)
+bRZ2 :: BRZ2
+bRZ2 = BRZ2 {
+  rate = S.AR,
+  input = 0.0
+  }
+mkBRZ2 :: BRZ2 -> S.UGen
+mkBRZ2 (BRZ2 r a') = S.mkOsc r "BRZ2" [a'] 1
+instance Make BRZ2 where
+  ugen = mkBRZ2
diff --git a/Sound/SC3/UGen/Record/Balance2.hs b/Sound/SC3/UGen/Record/Balance2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Balance2.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.Balance2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Balance2 = Balance2 {
+  rate :: S.Rate,
+  left :: S.UGen,
+  right :: S.UGen,
+  pos :: S.UGen,
+  level :: S.UGen
+  } deriving (Show)
+balance2 :: Balance2
+balance2 = Balance2 {
+  rate = S.AR,
+  left = 0.0,
+  right = 0.0,
+  pos = 0.0,
+  level = 1.0
+  }
+mkBalance2 :: Balance2 -> S.UGen
+mkBalance2 (Balance2 r a' b' c' d') = S.mkOsc r "Balance2" [a',b',c',d'] 2
+instance Make Balance2 where
+  ugen = mkBalance2
diff --git a/Sound/SC3/UGen/Record/Ball.hs b/Sound/SC3/UGen/Record/Ball.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Ball.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Ball where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Ball = Ball {
+  input :: S.UGen,
+  g :: S.UGen,
+  damp :: S.UGen,
+  friction :: S.UGen
+  } deriving (Show)
+ball :: Ball
+ball = Ball {
+  input = 0.0,
+  g = 1.0,
+  damp = 0.0,
+  friction = 0.01
+  }
+mkBall :: Ball -> S.UGen
+mkBall (Ball  a' b' c' d') = S.mkOsc S.AR "Ball" [a',b',c',d'] 1
+instance Make Ball where
+  ugen = mkBall
diff --git a/Sound/SC3/UGen/Record/BasicOpUGen.hs b/Sound/SC3/UGen/Record/BasicOpUGen.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BasicOpUGen.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.BasicOpUGen where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BasicOpUGen = BasicOpUGen {
+  maxSize :: S.UGen
+  } deriving (Show)
+basicOpUGen :: BasicOpUGen
+basicOpUGen = BasicOpUGen {
+  maxSize = 0.0
+  }
+mkBasicOpUGen :: BasicOpUGen -> S.UGen
+mkBasicOpUGen (BasicOpUGen  a') = S.mkOsc S.AR "BasicOpUGen" [a'] 1
+instance Make BasicOpUGen where
+  ugen = mkBasicOpUGen
diff --git a/Sound/SC3/UGen/Record/BeatTrack.hs b/Sound/SC3/UGen/Record/BeatTrack.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BeatTrack.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.BeatTrack where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BeatTrack = BeatTrack {
+  chain :: S.UGen,
+  lock :: S.UGen
+  } deriving (Show)
+beatTrack :: BeatTrack
+beatTrack = BeatTrack {
+  chain = 0.0,
+  lock = 0.0
+  }
+mkBeatTrack :: BeatTrack -> S.UGen
+mkBeatTrack (BeatTrack  a' b') = S.mkOsc S.KR "BeatTrack" [a',b'] 4
+instance Make BeatTrack where
+  ugen = mkBeatTrack
diff --git a/Sound/SC3/UGen/Record/BeatTrack2.hs b/Sound/SC3/UGen/Record/BeatTrack2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BeatTrack2.hs
@@ -0,0 +1,24 @@
+module Sound.SC3.UGen.Record.BeatTrack2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BeatTrack2 = BeatTrack2 {
+  busindex :: S.UGen,
+  numfeatures :: S.UGen,
+  windowsize :: S.UGen,
+  phaseaccuracy :: S.UGen,
+  lock :: S.UGen,
+  weightingscheme :: S.UGen
+  } deriving (Show)
+beatTrack2 :: BeatTrack2
+beatTrack2 = BeatTrack2 {
+  busindex = 0.0,
+  numfeatures = 0.0,
+  windowsize = 2.0,
+  phaseaccuracy = 0.02,
+  lock = 0.0,
+  weightingscheme = 0.0
+  }
+mkBeatTrack2 :: BeatTrack2 -> S.UGen
+mkBeatTrack2 (BeatTrack2  a' b' c' d' e' f') = S.mkOsc S.KR "BeatTrack2" [a',b',c',d',e',f'] 6
+instance Make BeatTrack2 where
+  ugen = mkBeatTrack2
diff --git a/Sound/SC3/UGen/Record/BiPanB2.hs b/Sound/SC3/UGen/Record/BiPanB2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BiPanB2.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.BiPanB2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BiPanB2 = BiPanB2 {
+  rate :: S.Rate,
+  inA :: S.UGen,
+  inB :: S.UGen,
+  azimuth :: S.UGen,
+  gain :: S.UGen
+  } deriving (Show)
+biPanB2 :: BiPanB2
+biPanB2 = BiPanB2 {
+  rate = S.AR,
+  inA = 0.0,
+  inB = 0.0,
+  azimuth = 0.0,
+  gain = 1.0
+  }
+mkBiPanB2 :: BiPanB2 -> S.UGen
+mkBiPanB2 (BiPanB2 r a' b' c' d') = S.mkOsc r "BiPanB2" [a',b',c',d'] 3
+instance Make BiPanB2 where
+  ugen = mkBiPanB2
diff --git a/Sound/SC3/UGen/Record/Blip.hs b/Sound/SC3/UGen/Record/Blip.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Blip.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Blip where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Blip = Blip {
+  freq :: S.UGen,
+  numharm :: S.UGen
+  } deriving (Show)
+blip :: Blip
+blip = Blip {
+  freq = 440.0,
+  numharm = 200.0
+  }
+mkBlip :: Blip -> S.UGen
+mkBlip (Blip  a' b') = S.mkOsc S.AR "Blip" [a',b'] 1
+instance Make Blip where
+  ugen = mkBlip
diff --git a/Sound/SC3/UGen/Record/BufAllpassC.hs b/Sound/SC3/UGen/Record/BufAllpassC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufAllpassC.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BufAllpassC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufAllpassC = BufAllpassC {
+  buf :: S.UGen,
+  input :: S.UGen,
+  delaytime :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+bufAllpassC :: BufAllpassC
+bufAllpassC = BufAllpassC {
+  buf = 0.0,
+  input = 0.0,
+  delaytime = 0.2,
+  decaytime = 1.0
+  }
+mkBufAllpassC :: BufAllpassC -> S.UGen
+mkBufAllpassC (BufAllpassC  a' b' c' d') = S.mkOsc S.AR "BufAllpassC" [a',b',c',d'] 1
+instance Make BufAllpassC where
+  ugen = mkBufAllpassC
diff --git a/Sound/SC3/UGen/Record/BufAllpassL.hs b/Sound/SC3/UGen/Record/BufAllpassL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufAllpassL.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BufAllpassL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufAllpassL = BufAllpassL {
+  buf :: S.UGen,
+  input :: S.UGen,
+  delaytime :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+bufAllpassL :: BufAllpassL
+bufAllpassL = BufAllpassL {
+  buf = 0.0,
+  input = 0.0,
+  delaytime = 0.2,
+  decaytime = 1.0
+  }
+mkBufAllpassL :: BufAllpassL -> S.UGen
+mkBufAllpassL (BufAllpassL  a' b' c' d') = S.mkOsc S.AR "BufAllpassL" [a',b',c',d'] 1
+instance Make BufAllpassL where
+  ugen = mkBufAllpassL
diff --git a/Sound/SC3/UGen/Record/BufAllpassN.hs b/Sound/SC3/UGen/Record/BufAllpassN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufAllpassN.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BufAllpassN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufAllpassN = BufAllpassN {
+  buf :: S.UGen,
+  input :: S.UGen,
+  delaytime :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+bufAllpassN :: BufAllpassN
+bufAllpassN = BufAllpassN {
+  buf = 0.0,
+  input = 0.0,
+  delaytime = 0.2,
+  decaytime = 1.0
+  }
+mkBufAllpassN :: BufAllpassN -> S.UGen
+mkBufAllpassN (BufAllpassN  a' b' c' d') = S.mkOsc S.AR "BufAllpassN" [a',b',c',d'] 1
+instance Make BufAllpassN where
+  ugen = mkBufAllpassN
diff --git a/Sound/SC3/UGen/Record/BufChannels.hs b/Sound/SC3/UGen/Record/BufChannels.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufChannels.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.BufChannels where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufChannels = BufChannels {
+  rate :: S.Rate,
+  bufnum :: S.UGen
+  } deriving (Show)
+bufChannels :: BufChannels
+bufChannels = BufChannels {
+  rate = S.AR,
+  bufnum = 0.0
+  }
+mkBufChannels :: BufChannels -> S.UGen
+mkBufChannels (BufChannels r a') = S.mkOsc r "BufChannels" [a'] 1
+instance Make BufChannels where
+  ugen = mkBufChannels
diff --git a/Sound/SC3/UGen/Record/BufCombC.hs b/Sound/SC3/UGen/Record/BufCombC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufCombC.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BufCombC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufCombC = BufCombC {
+  buf :: S.UGen,
+  input :: S.UGen,
+  delaytime :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+bufCombC :: BufCombC
+bufCombC = BufCombC {
+  buf = 0.0,
+  input = 0.0,
+  delaytime = 0.2,
+  decaytime = 1.0
+  }
+mkBufCombC :: BufCombC -> S.UGen
+mkBufCombC (BufCombC  a' b' c' d') = S.mkOsc S.AR "BufCombC" [a',b',c',d'] 1
+instance Make BufCombC where
+  ugen = mkBufCombC
diff --git a/Sound/SC3/UGen/Record/BufCombL.hs b/Sound/SC3/UGen/Record/BufCombL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufCombL.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BufCombL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufCombL = BufCombL {
+  buf :: S.UGen,
+  input :: S.UGen,
+  delaytime :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+bufCombL :: BufCombL
+bufCombL = BufCombL {
+  buf = 0.0,
+  input = 0.0,
+  delaytime = 0.2,
+  decaytime = 1.0
+  }
+mkBufCombL :: BufCombL -> S.UGen
+mkBufCombL (BufCombL  a' b' c' d') = S.mkOsc S.AR "BufCombL" [a',b',c',d'] 1
+instance Make BufCombL where
+  ugen = mkBufCombL
diff --git a/Sound/SC3/UGen/Record/BufCombN.hs b/Sound/SC3/UGen/Record/BufCombN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufCombN.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BufCombN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufCombN = BufCombN {
+  buf :: S.UGen,
+  input :: S.UGen,
+  delaytime :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+bufCombN :: BufCombN
+bufCombN = BufCombN {
+  buf = 0.0,
+  input = 0.0,
+  delaytime = 0.2,
+  decaytime = 1.0
+  }
+mkBufCombN :: BufCombN -> S.UGen
+mkBufCombN (BufCombN  a' b' c' d') = S.mkOsc S.AR "BufCombN" [a',b',c',d'] 1
+instance Make BufCombN where
+  ugen = mkBufCombN
diff --git a/Sound/SC3/UGen/Record/BufDelayC.hs b/Sound/SC3/UGen/Record/BufDelayC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufDelayC.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BufDelayC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufDelayC = BufDelayC {
+  rate :: S.Rate,
+  buf :: S.UGen,
+  input :: S.UGen,
+  delaytime :: S.UGen
+  } deriving (Show)
+bufDelayC :: BufDelayC
+bufDelayC = BufDelayC {
+  rate = S.AR,
+  buf = 0.0,
+  input = 0.0,
+  delaytime = 0.2
+  }
+mkBufDelayC :: BufDelayC -> S.UGen
+mkBufDelayC (BufDelayC r a' b' c') = S.mkOsc r "BufDelayC" [a',b',c'] 1
+instance Make BufDelayC where
+  ugen = mkBufDelayC
diff --git a/Sound/SC3/UGen/Record/BufDelayL.hs b/Sound/SC3/UGen/Record/BufDelayL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufDelayL.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BufDelayL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufDelayL = BufDelayL {
+  rate :: S.Rate,
+  buf :: S.UGen,
+  input :: S.UGen,
+  delaytime :: S.UGen
+  } deriving (Show)
+bufDelayL :: BufDelayL
+bufDelayL = BufDelayL {
+  rate = S.AR,
+  buf = 0.0,
+  input = 0.0,
+  delaytime = 0.2
+  }
+mkBufDelayL :: BufDelayL -> S.UGen
+mkBufDelayL (BufDelayL r a' b' c') = S.mkOsc r "BufDelayL" [a',b',c'] 1
+instance Make BufDelayL where
+  ugen = mkBufDelayL
diff --git a/Sound/SC3/UGen/Record/BufDelayN.hs b/Sound/SC3/UGen/Record/BufDelayN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufDelayN.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.BufDelayN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufDelayN = BufDelayN {
+  rate :: S.Rate,
+  buf :: S.UGen,
+  input :: S.UGen,
+  delaytime :: S.UGen
+  } deriving (Show)
+bufDelayN :: BufDelayN
+bufDelayN = BufDelayN {
+  rate = S.AR,
+  buf = 0.0,
+  input = 0.0,
+  delaytime = 0.2
+  }
+mkBufDelayN :: BufDelayN -> S.UGen
+mkBufDelayN (BufDelayN r a' b' c') = S.mkOsc r "BufDelayN" [a',b',c'] 1
+instance Make BufDelayN where
+  ugen = mkBufDelayN
diff --git a/Sound/SC3/UGen/Record/BufDur.hs b/Sound/SC3/UGen/Record/BufDur.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufDur.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.BufDur where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufDur = BufDur {
+  rate :: S.Rate,
+  bufnum :: S.UGen
+  } deriving (Show)
+bufDur :: BufDur
+bufDur = BufDur {
+  rate = S.AR,
+  bufnum = 0.0
+  }
+mkBufDur :: BufDur -> S.UGen
+mkBufDur (BufDur r a') = S.mkOsc r "BufDur" [a'] 1
+instance Make BufDur where
+  ugen = mkBufDur
diff --git a/Sound/SC3/UGen/Record/BufFrames.hs b/Sound/SC3/UGen/Record/BufFrames.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufFrames.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.BufFrames where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufFrames = BufFrames {
+  rate :: S.Rate,
+  bufnum :: S.UGen
+  } deriving (Show)
+bufFrames :: BufFrames
+bufFrames = BufFrames {
+  rate = S.AR,
+  bufnum = 0.0
+  }
+mkBufFrames :: BufFrames -> S.UGen
+mkBufFrames (BufFrames r a') = S.mkOsc r "BufFrames" [a'] 1
+instance Make BufFrames where
+  ugen = mkBufFrames
diff --git a/Sound/SC3/UGen/Record/BufInfoUGenBase.hs b/Sound/SC3/UGen/Record/BufInfoUGenBase.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufInfoUGenBase.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.BufInfoUGenBase where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufInfoUGenBase = BufInfoUGenBase {
+  rate :: S.Rate,
+  bufnum :: S.UGen
+  } deriving (Show)
+bufInfoUGenBase :: BufInfoUGenBase
+bufInfoUGenBase = BufInfoUGenBase {
+  rate = S.AR,
+  bufnum = 0.0
+  }
+mkBufInfoUGenBase :: BufInfoUGenBase -> S.UGen
+mkBufInfoUGenBase (BufInfoUGenBase r a') = S.mkOsc r "BufInfoUGenBase" [a'] 1
+instance Make BufInfoUGenBase where
+  ugen = mkBufInfoUGenBase
diff --git a/Sound/SC3/UGen/Record/BufRateScale.hs b/Sound/SC3/UGen/Record/BufRateScale.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufRateScale.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.BufRateScale where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufRateScale = BufRateScale {
+  rate :: S.Rate,
+  bufnum :: S.UGen
+  } deriving (Show)
+bufRateScale :: BufRateScale
+bufRateScale = BufRateScale {
+  rate = S.AR,
+  bufnum = 0.0
+  }
+mkBufRateScale :: BufRateScale -> S.UGen
+mkBufRateScale (BufRateScale r a') = S.mkOsc r "BufRateScale" [a'] 1
+instance Make BufRateScale where
+  ugen = mkBufRateScale
diff --git a/Sound/SC3/UGen/Record/BufRd.hs b/Sound/SC3/UGen/Record/BufRd.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufRd.hs
@@ -0,0 +1,24 @@
+module Sound.SC3.UGen.Record.BufRd where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufRd = BufRd {
+  rate :: S.Rate,
+  numChannels :: S.UGen,
+  bufnum :: S.UGen,
+  phase :: S.UGen,
+  loop :: S.UGen,
+  interpolation :: S.UGen
+  } deriving (Show)
+bufRd :: BufRd
+bufRd = BufRd {
+  rate = S.AR,
+  numChannels = 0.0,
+  bufnum = 0.0,
+  phase = 0.0,
+  loop = 1.0,
+  interpolation = 2.0
+  }
+mkBufRd :: BufRd -> S.UGen
+mkBufRd (BufRd r a' b' c' d' e') = S.mkOsc r "BufRd" [a',b',c',d',e'] 1
+instance Make BufRd where
+  ugen = mkBufRd
diff --git a/Sound/SC3/UGen/Record/BufSampleRate.hs b/Sound/SC3/UGen/Record/BufSampleRate.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufSampleRate.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.BufSampleRate where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufSampleRate = BufSampleRate {
+  rate :: S.Rate,
+  bufnum :: S.UGen
+  } deriving (Show)
+bufSampleRate :: BufSampleRate
+bufSampleRate = BufSampleRate {
+  rate = S.AR,
+  bufnum = 0.0
+  }
+mkBufSampleRate :: BufSampleRate -> S.UGen
+mkBufSampleRate (BufSampleRate r a') = S.mkOsc r "BufSampleRate" [a'] 1
+instance Make BufSampleRate where
+  ugen = mkBufSampleRate
diff --git a/Sound/SC3/UGen/Record/BufSamples.hs b/Sound/SC3/UGen/Record/BufSamples.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufSamples.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.BufSamples where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufSamples = BufSamples {
+  rate :: S.Rate,
+  bufnum :: S.UGen
+  } deriving (Show)
+bufSamples :: BufSamples
+bufSamples = BufSamples {
+  rate = S.AR,
+  bufnum = 0.0
+  }
+mkBufSamples :: BufSamples -> S.UGen
+mkBufSamples (BufSamples r a') = S.mkOsc r "BufSamples" [a'] 1
+instance Make BufSamples where
+  ugen = mkBufSamples
diff --git a/Sound/SC3/UGen/Record/BufWr.hs b/Sound/SC3/UGen/Record/BufWr.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/BufWr.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.BufWr where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data BufWr = BufWr {
+  rate :: S.Rate,
+  inputArray :: S.UGen,
+  bufnum :: S.UGen,
+  phase :: S.UGen,
+  loop :: S.UGen
+  } deriving (Show)
+bufWr :: BufWr
+bufWr = BufWr {
+  rate = S.AR,
+  inputArray = 0.0,
+  bufnum = 0.0,
+  phase = 0.0,
+  loop = 1.0
+  }
+mkBufWr :: BufWr -> S.UGen
+mkBufWr (BufWr r a' b' c' d') = S.mkOsc r "BufWr" [a',b',c',d'] 1
+instance Make BufWr where
+  ugen = mkBufWr
diff --git a/Sound/SC3/UGen/Record/COsc.hs b/Sound/SC3/UGen/Record/COsc.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/COsc.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.COsc where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data COsc = COsc {
+  rate :: S.Rate,
+  bufnum :: S.UGen,
+  freq :: S.UGen,
+  beats :: S.UGen
+  } deriving (Show)
+cOsc :: COsc
+cOsc = COsc {
+  rate = S.AR,
+  bufnum = 0.0,
+  freq = 440.0,
+  beats = 0.5
+  }
+mkCOsc :: COsc -> S.UGen
+mkCOsc (COsc r a' b' c') = S.mkOsc r "COsc" [a',b',c'] 1
+instance Make COsc where
+  ugen = mkCOsc
diff --git a/Sound/SC3/UGen/Record/ChaosGen.hs b/Sound/SC3/UGen/Record/ChaosGen.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/ChaosGen.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.ChaosGen where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data ChaosGen = ChaosGen {
+  maxSize :: S.UGen
+  } deriving (Show)
+chaosGen :: ChaosGen
+chaosGen = ChaosGen {
+  maxSize = 0.0
+  }
+mkChaosGen :: ChaosGen -> S.UGen
+mkChaosGen (ChaosGen  a') = S.mkOsc S.AR "ChaosGen" [a'] 1
+instance Make ChaosGen where
+  ugen = mkChaosGen
diff --git a/Sound/SC3/UGen/Record/CheckBadValues.hs b/Sound/SC3/UGen/Record/CheckBadValues.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/CheckBadValues.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.CheckBadValues where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data CheckBadValues = CheckBadValues {
+  rate :: S.Rate,
+  input :: S.UGen,
+  id_ :: S.UGen,
+  post :: S.UGen
+  } deriving (Show)
+checkBadValues :: CheckBadValues
+checkBadValues = CheckBadValues {
+  rate = S.AR,
+  input = 0.0,
+  id_ = 0.0,
+  post = 2.0
+  }
+mkCheckBadValues :: CheckBadValues -> S.UGen
+mkCheckBadValues (CheckBadValues r a' b' c') = S.mkOsc r "CheckBadValues" [a',b',c'] 1
+instance Make CheckBadValues where
+  ugen = mkCheckBadValues
diff --git a/Sound/SC3/UGen/Record/ClearBuf.hs b/Sound/SC3/UGen/Record/ClearBuf.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/ClearBuf.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.ClearBuf where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data ClearBuf = ClearBuf {
+  buf :: S.UGen
+  } deriving (Show)
+clearBuf :: ClearBuf
+clearBuf = ClearBuf {
+  buf = 0.0
+  }
+mkClearBuf :: ClearBuf -> S.UGen
+mkClearBuf (ClearBuf  a') = S.mkOsc S.IR "ClearBuf" [a'] 1
+instance Make ClearBuf where
+  ugen = mkClearBuf
diff --git a/Sound/SC3/UGen/Record/Clip.hs b/Sound/SC3/UGen/Record/Clip.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Clip.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Clip where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Clip = Clip {
+  rate :: S.Rate,
+  input :: S.UGen,
+  lo :: S.UGen,
+  hi :: S.UGen
+  } deriving (Show)
+clip :: Clip
+clip = Clip {
+  rate = S.AR,
+  input = 0.0,
+  lo = 0.0,
+  hi = 1.0
+  }
+mkClip :: Clip -> S.UGen
+mkClip (Clip r a' b' c') = S.mkOsc r "Clip" [a',b',c'] 1
+instance Make Clip where
+  ugen = mkClip
diff --git a/Sound/SC3/UGen/Record/CoinGate.hs b/Sound/SC3/UGen/Record/CoinGate.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/CoinGate.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.CoinGate where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data CoinGate = CoinGate {
+  rate :: S.Rate,
+  prob :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+coinGate :: CoinGate
+coinGate = CoinGate {
+  rate = S.AR,
+  prob = 0.0,
+  input = 0.0
+  }
+mkCoinGate :: CoinGate -> S.UGen
+mkCoinGate (CoinGate r a' b') = S.mkOsc r "CoinGate" [a',b'] 1
+instance Make CoinGate where
+  ugen = mkCoinGate
diff --git a/Sound/SC3/UGen/Record/CombC.hs b/Sound/SC3/UGen/Record/CombC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/CombC.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.CombC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data CombC = CombC {
+  rate :: S.Rate,
+  input :: S.UGen,
+  maxdelaytime :: S.UGen,
+  delaytime :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+combC :: CombC
+combC = CombC {
+  rate = S.AR,
+  input = 0.0,
+  maxdelaytime = 0.2,
+  delaytime = 0.2,
+  decaytime = 1.0
+  }
+mkCombC :: CombC -> S.UGen
+mkCombC (CombC r a' b' c' d') = S.mkOsc r "CombC" [a',b',c',d'] 1
+instance Make CombC where
+  ugen = mkCombC
diff --git a/Sound/SC3/UGen/Record/CombL.hs b/Sound/SC3/UGen/Record/CombL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/CombL.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.CombL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data CombL = CombL {
+  rate :: S.Rate,
+  input :: S.UGen,
+  maxdelaytime :: S.UGen,
+  delaytime :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+combL :: CombL
+combL = CombL {
+  rate = S.AR,
+  input = 0.0,
+  maxdelaytime = 0.2,
+  delaytime = 0.2,
+  decaytime = 1.0
+  }
+mkCombL :: CombL -> S.UGen
+mkCombL (CombL r a' b' c' d') = S.mkOsc r "CombL" [a',b',c',d'] 1
+instance Make CombL where
+  ugen = mkCombL
diff --git a/Sound/SC3/UGen/Record/CombN.hs b/Sound/SC3/UGen/Record/CombN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/CombN.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.CombN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data CombN = CombN {
+  rate :: S.Rate,
+  input :: S.UGen,
+  maxdelaytime :: S.UGen,
+  delaytime :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+combN :: CombN
+combN = CombN {
+  rate = S.AR,
+  input = 0.0,
+  maxdelaytime = 0.2,
+  delaytime = 0.2,
+  decaytime = 1.0
+  }
+mkCombN :: CombN -> S.UGen
+mkCombN (CombN r a' b' c' d') = S.mkOsc r "CombN" [a',b',c',d'] 1
+instance Make CombN where
+  ugen = mkCombN
diff --git a/Sound/SC3/UGen/Record/Compander.hs b/Sound/SC3/UGen/Record/Compander.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Compander.hs
@@ -0,0 +1,26 @@
+module Sound.SC3.UGen.Record.Compander where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Compander = Compander {
+  input :: S.UGen,
+  control :: S.UGen,
+  thresh :: S.UGen,
+  slopeBelow :: S.UGen,
+  slopeAbove :: S.UGen,
+  clampTime :: S.UGen,
+  relaxTime :: S.UGen
+  } deriving (Show)
+compander :: Compander
+compander = Compander {
+  input = 0.0,
+  control = 0.0,
+  thresh = 0.5,
+  slopeBelow = 1.0,
+  slopeAbove = 1.0,
+  clampTime = 0.01,
+  relaxTime = 0.1
+  }
+mkCompander :: Compander -> S.UGen
+mkCompander (Compander  a' b' c' d' e' f' g') = S.mkOsc S.AR "Compander" [a',b',c',d',e',f',g'] 1
+instance Make Compander where
+  ugen = mkCompander
diff --git a/Sound/SC3/UGen/Record/CompanderD.hs b/Sound/SC3/UGen/Record/CompanderD.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/CompanderD.hs
@@ -0,0 +1,24 @@
+module Sound.SC3.UGen.Record.CompanderD where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data CompanderD = CompanderD {
+  input :: S.UGen,
+  thresh :: S.UGen,
+  slopeBelow :: S.UGen,
+  slopeAbove :: S.UGen,
+  clampTime :: S.UGen,
+  relaxTime :: S.UGen
+  } deriving (Show)
+companderD :: CompanderD
+companderD = CompanderD {
+  input = 0.0,
+  thresh = 0.5,
+  slopeBelow = 1.0,
+  slopeAbove = 1.0,
+  clampTime = 0.01,
+  relaxTime = 0.01
+  }
+mkCompanderD :: CompanderD -> S.UGen
+mkCompanderD (CompanderD  a' b' c' d' e' f') = S.mkOsc S.AR "CompanderD" [a',b',c',d',e',f'] 1
+instance Make CompanderD where
+  ugen = mkCompanderD
diff --git a/Sound/SC3/UGen/Record/Control.hs b/Sound/SC3/UGen/Record/Control.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Control.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Control where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Control = Control {
+  rate :: S.Rate,
+  values :: S.UGen
+  } deriving (Show)
+control :: Control
+control = Control {
+  rate = S.AR,
+  values = 0.0
+  }
+mkControl :: Control -> S.UGen
+mkControl (Control r a') = S.mkOsc r "Control" [a'] 1
+instance Make Control where
+  ugen = mkControl
diff --git a/Sound/SC3/UGen/Record/Convolution.hs b/Sound/SC3/UGen/Record/Convolution.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Convolution.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Convolution where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Convolution = Convolution {
+  input :: S.UGen,
+  kernel :: S.UGen,
+  framesize :: S.UGen
+  } deriving (Show)
+convolution :: Convolution
+convolution = Convolution {
+  input = 0.0,
+  kernel = 0.0,
+  framesize = 512.0
+  }
+mkConvolution :: Convolution -> S.UGen
+mkConvolution (Convolution  a' b' c') = S.mkOsc S.AR "Convolution" [a',b',c'] 1
+instance Make Convolution where
+  ugen = mkConvolution
diff --git a/Sound/SC3/UGen/Record/Convolution2.hs b/Sound/SC3/UGen/Record/Convolution2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Convolution2.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Convolution2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Convolution2 = Convolution2 {
+  input :: S.UGen,
+  kernel :: S.UGen,
+  trigger :: S.UGen,
+  framesize :: S.UGen
+  } deriving (Show)
+convolution2 :: Convolution2
+convolution2 = Convolution2 {
+  input = 0.0,
+  kernel = 0.0,
+  trigger = 0.0,
+  framesize = 0.0
+  }
+mkConvolution2 :: Convolution2 -> S.UGen
+mkConvolution2 (Convolution2  a' b' c' d') = S.mkOsc S.AR "Convolution2" [a',b',c',d'] 1
+instance Make Convolution2 where
+  ugen = mkConvolution2
diff --git a/Sound/SC3/UGen/Record/Convolution2L.hs b/Sound/SC3/UGen/Record/Convolution2L.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Convolution2L.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.Convolution2L where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Convolution2L = Convolution2L {
+  input :: S.UGen,
+  kernel :: S.UGen,
+  trigger :: S.UGen,
+  framesize :: S.UGen,
+  crossfade :: S.UGen
+  } deriving (Show)
+convolution2L :: Convolution2L
+convolution2L = Convolution2L {
+  input = 0.0,
+  kernel = 0.0,
+  trigger = 0.0,
+  framesize = 0.0,
+  crossfade = 1.0
+  }
+mkConvolution2L :: Convolution2L -> S.UGen
+mkConvolution2L (Convolution2L  a' b' c' d' e') = S.mkOsc S.AR "Convolution2L" [a',b',c',d',e'] 1
+instance Make Convolution2L where
+  ugen = mkConvolution2L
diff --git a/Sound/SC3/UGen/Record/Convolution3.hs b/Sound/SC3/UGen/Record/Convolution3.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Convolution3.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.Convolution3 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Convolution3 = Convolution3 {
+  rate :: S.Rate,
+  input :: S.UGen,
+  kernel :: S.UGen,
+  trigger :: S.UGen,
+  framesize :: S.UGen
+  } deriving (Show)
+convolution3 :: Convolution3
+convolution3 = Convolution3 {
+  rate = S.AR,
+  input = 0.0,
+  kernel = 0.0,
+  trigger = 0.0,
+  framesize = 0.0
+  }
+mkConvolution3 :: Convolution3 -> S.UGen
+mkConvolution3 (Convolution3 r a' b' c' d') = S.mkOsc r "Convolution3" [a',b',c',d'] 1
+instance Make Convolution3 where
+  ugen = mkConvolution3
diff --git a/Sound/SC3/UGen/Record/Crackle.hs b/Sound/SC3/UGen/Record/Crackle.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Crackle.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Crackle where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Crackle = Crackle {
+  rate :: S.Rate,
+  chaosParam :: S.UGen
+  } deriving (Show)
+crackle :: Crackle
+crackle = Crackle {
+  rate = S.AR,
+  chaosParam = 1.5
+  }
+mkCrackle :: Crackle -> S.UGen
+mkCrackle (Crackle r a') = S.mkOsc r "Crackle" [a'] 1
+instance Make Crackle where
+  ugen = mkCrackle
diff --git a/Sound/SC3/UGen/Record/CuspL.hs b/Sound/SC3/UGen/Record/CuspL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/CuspL.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.CuspL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data CuspL = CuspL {
+  freq :: S.UGen,
+  a :: S.UGen,
+  b :: S.UGen,
+  xi :: S.UGen
+  } deriving (Show)
+cuspL :: CuspL
+cuspL = CuspL {
+  freq = 22050.0,
+  a = 1.0,
+  b = 1.9,
+  xi = 0.0
+  }
+mkCuspL :: CuspL -> S.UGen
+mkCuspL (CuspL  a' b' c' d') = S.mkOsc S.AR "CuspL" [a',b',c',d'] 1
+instance Make CuspL where
+  ugen = mkCuspL
diff --git a/Sound/SC3/UGen/Record/CuspN.hs b/Sound/SC3/UGen/Record/CuspN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/CuspN.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.CuspN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data CuspN = CuspN {
+  freq :: S.UGen,
+  a :: S.UGen,
+  b :: S.UGen,
+  xi :: S.UGen
+  } deriving (Show)
+cuspN :: CuspN
+cuspN = CuspN {
+  freq = 22050.0,
+  a = 1.0,
+  b = 1.9,
+  xi = 0.0
+  }
+mkCuspN :: CuspN -> S.UGen
+mkCuspN (CuspN  a' b' c' d') = S.mkOsc S.AR "CuspN" [a',b',c',d'] 1
+instance Make CuspN where
+  ugen = mkCuspN
diff --git a/Sound/SC3/UGen/Record/DC.hs b/Sound/SC3/UGen/Record/DC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DC.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.DC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DC = DC {
+  rate :: S.Rate,
+  input :: S.UGen
+  } deriving (Show)
+dC :: DC
+dC = DC {
+  rate = S.AR,
+  input = 0.0
+  }
+mkDC :: DC -> S.UGen
+mkDC (DC r a') = S.mkOsc r "DC" [a'] 1
+instance Make DC where
+  ugen = mkDC
diff --git a/Sound/SC3/UGen/Record/DUGen.hs b/Sound/SC3/UGen/Record/DUGen.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DUGen.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.DUGen where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DUGen = DUGen {
+  maxSize :: S.UGen
+  } deriving (Show)
+dUGen :: DUGen
+dUGen = DUGen {
+  maxSize = 0.0
+  }
+mkDUGen :: DUGen -> S.UGen
+mkDUGen (DUGen  a') = S.mkOsc S.AR "DUGen" [a'] 1
+instance Make DUGen where
+  ugen = mkDUGen
diff --git a/Sound/SC3/UGen/Record/Dbrown.hs b/Sound/SC3/UGen/Record/Dbrown.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dbrown.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Dbrown where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dbrown = Dbrown {
+  lo :: S.UGen,
+  hi :: S.UGen,
+  step :: S.UGen,
+  length_ :: S.UGen
+  } deriving (Show)
+dbrown :: Dbrown
+dbrown = Dbrown {
+  lo = 0.0,
+  hi = 1.0,
+  step = 0.01,
+  length_ = 100000000.0
+  }
+mkDbrown :: Dbrown -> S.UGen
+mkDbrown (Dbrown  a' b' c' d') = S.mkOsc S.DR "Dbrown" [a',b',c',d'] 1
+instance Make Dbrown where
+  ugen = mkDbrown
diff --git a/Sound/SC3/UGen/Record/Dbufrd.hs b/Sound/SC3/UGen/Record/Dbufrd.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dbufrd.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Dbufrd where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dbufrd = Dbufrd {
+  bufnum :: S.UGen,
+  phase :: S.UGen,
+  loop :: S.UGen
+  } deriving (Show)
+dbufrd :: Dbufrd
+dbufrd = Dbufrd {
+  bufnum = 0.0,
+  phase = 0.0,
+  loop = 1.0
+  }
+mkDbufrd :: Dbufrd -> S.UGen
+mkDbufrd (Dbufrd  a' b' c') = S.mkOsc S.DR "Dbufrd" [a',b',c'] 1
+instance Make Dbufrd where
+  ugen = mkDbufrd
diff --git a/Sound/SC3/UGen/Record/Dbufwr.hs b/Sound/SC3/UGen/Record/Dbufwr.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dbufwr.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Dbufwr where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dbufwr = Dbufwr {
+  input :: S.UGen,
+  bufnum :: S.UGen,
+  phase :: S.UGen,
+  loop :: S.UGen
+  } deriving (Show)
+dbufwr :: Dbufwr
+dbufwr = Dbufwr {
+  input = 0.0,
+  bufnum = 0.0,
+  phase = 0.0,
+  loop = 1.0
+  }
+mkDbufwr :: Dbufwr -> S.UGen
+mkDbufwr (Dbufwr  a' b' c' d') = S.mkOsc S.DR "Dbufwr" [a',b',c',d'] 1
+instance Make Dbufwr where
+  ugen = mkDbufwr
diff --git a/Sound/SC3/UGen/Record/Decay.hs b/Sound/SC3/UGen/Record/Decay.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Decay.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Decay where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Decay = Decay {
+  rate :: S.Rate,
+  input :: S.UGen,
+  decayTime :: S.UGen
+  } deriving (Show)
+decay :: Decay
+decay = Decay {
+  rate = S.AR,
+  input = 0.0,
+  decayTime = 1.0
+  }
+mkDecay :: Decay -> S.UGen
+mkDecay (Decay r a' b') = S.mkOsc r "Decay" [a',b'] 1
+instance Make Decay where
+  ugen = mkDecay
diff --git a/Sound/SC3/UGen/Record/Decay2.hs b/Sound/SC3/UGen/Record/Decay2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Decay2.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Decay2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Decay2 = Decay2 {
+  rate :: S.Rate,
+  input :: S.UGen,
+  attackTime :: S.UGen,
+  decayTime :: S.UGen
+  } deriving (Show)
+decay2 :: Decay2
+decay2 = Decay2 {
+  rate = S.AR,
+  input = 0.0,
+  attackTime = 0.01,
+  decayTime = 1.0
+  }
+mkDecay2 :: Decay2 -> S.UGen
+mkDecay2 (Decay2 r a' b' c') = S.mkOsc r "Decay2" [a',b',c'] 1
+instance Make Decay2 where
+  ugen = mkDecay2
diff --git a/Sound/SC3/UGen/Record/DecodeB2.hs b/Sound/SC3/UGen/Record/DecodeB2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DecodeB2.hs
@@ -0,0 +1,24 @@
+module Sound.SC3.UGen.Record.DecodeB2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DecodeB2 = DecodeB2 {
+  rate :: S.Rate,
+  numChans :: S.UGen,
+  w :: S.UGen,
+  x :: S.UGen,
+  y :: S.UGen,
+  orientation :: S.UGen
+  } deriving (Show)
+decodeB2 :: DecodeB2
+decodeB2 = DecodeB2 {
+  rate = S.AR,
+  numChans = 0.0,
+  w = 0.0,
+  x = 0.0,
+  y = 0.0,
+  orientation = 0.5
+  }
+mkDecodeB2 :: DecodeB2 -> S.UGen
+mkDecodeB2 (DecodeB2 r a' b' c' d' e') = S.mkOsc r "DecodeB2" [a',b',c',d',e'] 1
+instance Make DecodeB2 where
+  ugen = mkDecodeB2
diff --git a/Sound/SC3/UGen/Record/DegreeToKey.hs b/Sound/SC3/UGen/Record/DegreeToKey.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DegreeToKey.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.DegreeToKey where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DegreeToKey = DegreeToKey {
+  rate :: S.Rate,
+  bufnum :: S.UGen,
+  input :: S.UGen,
+  octave :: S.UGen
+  } deriving (Show)
+degreeToKey :: DegreeToKey
+degreeToKey = DegreeToKey {
+  rate = S.AR,
+  bufnum = 0.0,
+  input = 0.0,
+  octave = 12.0
+  }
+mkDegreeToKey :: DegreeToKey -> S.UGen
+mkDegreeToKey (DegreeToKey r a' b' c') = S.mkOsc r "DegreeToKey" [a',b',c'] 1
+instance Make DegreeToKey where
+  ugen = mkDegreeToKey
diff --git a/Sound/SC3/UGen/Record/Delay1.hs b/Sound/SC3/UGen/Record/Delay1.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Delay1.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Delay1 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Delay1 = Delay1 {
+  rate :: S.Rate,
+  input :: S.UGen
+  } deriving (Show)
+delay1 :: Delay1
+delay1 = Delay1 {
+  rate = S.AR,
+  input = 0.0
+  }
+mkDelay1 :: Delay1 -> S.UGen
+mkDelay1 (Delay1 r a') = S.mkOsc r "Delay1" [a'] 1
+instance Make Delay1 where
+  ugen = mkDelay1
diff --git a/Sound/SC3/UGen/Record/Delay2.hs b/Sound/SC3/UGen/Record/Delay2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Delay2.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Delay2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Delay2 = Delay2 {
+  rate :: S.Rate,
+  input :: S.UGen
+  } deriving (Show)
+delay2 :: Delay2
+delay2 = Delay2 {
+  rate = S.AR,
+  input = 0.0
+  }
+mkDelay2 :: Delay2 -> S.UGen
+mkDelay2 (Delay2 r a') = S.mkOsc r "Delay2" [a'] 1
+instance Make Delay2 where
+  ugen = mkDelay2
diff --git a/Sound/SC3/UGen/Record/DelayC.hs b/Sound/SC3/UGen/Record/DelayC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DelayC.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.DelayC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DelayC = DelayC {
+  rate :: S.Rate,
+  input :: S.UGen,
+  maxdelaytime :: S.UGen,
+  delaytime :: S.UGen
+  } deriving (Show)
+delayC :: DelayC
+delayC = DelayC {
+  rate = S.AR,
+  input = 0.0,
+  maxdelaytime = 0.2,
+  delaytime = 0.2
+  }
+mkDelayC :: DelayC -> S.UGen
+mkDelayC (DelayC r a' b' c') = S.mkOsc r "DelayC" [a',b',c'] 1
+instance Make DelayC where
+  ugen = mkDelayC
diff --git a/Sound/SC3/UGen/Record/DelayL.hs b/Sound/SC3/UGen/Record/DelayL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DelayL.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.DelayL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DelayL = DelayL {
+  rate :: S.Rate,
+  input :: S.UGen,
+  maxdelaytime :: S.UGen,
+  delaytime :: S.UGen
+  } deriving (Show)
+delayL :: DelayL
+delayL = DelayL {
+  rate = S.AR,
+  input = 0.0,
+  maxdelaytime = 0.2,
+  delaytime = 0.2
+  }
+mkDelayL :: DelayL -> S.UGen
+mkDelayL (DelayL r a' b' c') = S.mkOsc r "DelayL" [a',b',c'] 1
+instance Make DelayL where
+  ugen = mkDelayL
diff --git a/Sound/SC3/UGen/Record/DelayN.hs b/Sound/SC3/UGen/Record/DelayN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DelayN.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.DelayN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DelayN = DelayN {
+  rate :: S.Rate,
+  input :: S.UGen,
+  maxdelaytime :: S.UGen,
+  delaytime :: S.UGen
+  } deriving (Show)
+delayN :: DelayN
+delayN = DelayN {
+  rate = S.AR,
+  input = 0.0,
+  maxdelaytime = 0.2,
+  delaytime = 0.2
+  }
+mkDelayN :: DelayN -> S.UGen
+mkDelayN (DelayN r a' b' c') = S.mkOsc r "DelayN" [a',b',c'] 1
+instance Make DelayN where
+  ugen = mkDelayN
diff --git a/Sound/SC3/UGen/Record/Demand.hs b/Sound/SC3/UGen/Record/Demand.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Demand.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Demand where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Demand = Demand {
+  rate :: S.Rate,
+  trig :: S.UGen,
+  reset :: S.UGen,
+  demandUGens :: S.UGen
+  } deriving (Show)
+demand :: Demand
+demand = Demand {
+  rate = S.AR,
+  trig = 0.0,
+  reset = 0.0,
+  demandUGens = 0.0
+  }
+mkDemand :: Demand -> S.UGen
+mkDemand (Demand r a' b' c') = S.mkOsc r "Demand" [a',b',c'] 1
+instance Make Demand where
+  ugen = mkDemand
diff --git a/Sound/SC3/UGen/Record/DemandEnvGen.hs b/Sound/SC3/UGen/Record/DemandEnvGen.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DemandEnvGen.hs
@@ -0,0 +1,34 @@
+module Sound.SC3.UGen.Record.DemandEnvGen where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DemandEnvGen = DemandEnvGen {
+  rate :: S.Rate,
+  level :: S.UGen,
+  dur :: S.UGen,
+  shape :: S.UGen,
+  curve :: S.UGen,
+  gate :: S.UGen,
+  reset :: S.UGen,
+  levelScale :: S.UGen,
+  levelBias :: S.UGen,
+  timeScale :: S.UGen,
+  doneAction :: S.UGen
+  } deriving (Show)
+demandEnvGen :: DemandEnvGen
+demandEnvGen = DemandEnvGen {
+  rate = S.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
+  }
+mkDemandEnvGen :: DemandEnvGen -> S.UGen
+mkDemandEnvGen (DemandEnvGen r a' b' c' d' e' f' g' h' i' j') = S.mkOsc r "DemandEnvGen" [a',b',c',d',e',f',g',h',i',j'] 1
+instance Make DemandEnvGen where
+  ugen = mkDemandEnvGen
diff --git a/Sound/SC3/UGen/Record/DetectIndex.hs b/Sound/SC3/UGen/Record/DetectIndex.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DetectIndex.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.DetectIndex where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DetectIndex = DetectIndex {
+  rate :: S.Rate,
+  bufnum :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+detectIndex :: DetectIndex
+detectIndex = DetectIndex {
+  rate = S.AR,
+  bufnum = 0.0,
+  input = 0.0
+  }
+mkDetectIndex :: DetectIndex -> S.UGen
+mkDetectIndex (DetectIndex r a' b') = S.mkOsc r "DetectIndex" [a',b'] 1
+instance Make DetectIndex where
+  ugen = mkDetectIndex
diff --git a/Sound/SC3/UGen/Record/DetectSilence.hs b/Sound/SC3/UGen/Record/DetectSilence.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DetectSilence.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.DetectSilence where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DetectSilence = DetectSilence {
+  rate :: S.Rate,
+  input :: S.UGen,
+  amp :: S.UGen,
+  time :: S.UGen,
+  doneAction :: S.UGen
+  } deriving (Show)
+detectSilence :: DetectSilence
+detectSilence = DetectSilence {
+  rate = S.AR,
+  input = 0.0,
+  amp = 0.0001,
+  time = 0.1,
+  doneAction = 0.0
+  }
+mkDetectSilence :: DetectSilence -> S.UGen
+mkDetectSilence (DetectSilence r a' b' c' d') = S.mkOsc r "DetectSilence" [a',b',c',d'] 1
+instance Make DetectSilence where
+  ugen = mkDetectSilence
diff --git a/Sound/SC3/UGen/Record/Dgeom.hs b/Sound/SC3/UGen/Record/Dgeom.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dgeom.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Dgeom where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dgeom = Dgeom {
+  start :: S.UGen,
+  grow :: S.UGen,
+  length_ :: S.UGen
+  } deriving (Show)
+dgeom :: Dgeom
+dgeom = Dgeom {
+  start = 1.0,
+  grow = 2.0,
+  length_ = 100.0
+  }
+mkDgeom :: Dgeom -> S.UGen
+mkDgeom (Dgeom  a' b' c') = S.mkOsc S.DR "Dgeom" [a',b',c'] 1
+instance Make Dgeom where
+  ugen = mkDgeom
diff --git a/Sound/SC3/UGen/Record/Dibrown.hs b/Sound/SC3/UGen/Record/Dibrown.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dibrown.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Dibrown where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dibrown = Dibrown {
+  lo :: S.UGen,
+  hi :: S.UGen,
+  step :: S.UGen,
+  length_ :: S.UGen
+  } deriving (Show)
+dibrown :: Dibrown
+dibrown = Dibrown {
+  lo = 0.0,
+  hi = 1.0,
+  step = 0.01,
+  length_ = 100000000.0
+  }
+mkDibrown :: Dibrown -> S.UGen
+mkDibrown (Dibrown  a' b' c' d') = S.mkOsc S.DR "Dibrown" [a',b',c',d'] 1
+instance Make Dibrown where
+  ugen = mkDibrown
diff --git a/Sound/SC3/UGen/Record/DiskIn.hs b/Sound/SC3/UGen/Record/DiskIn.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DiskIn.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.DiskIn where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DiskIn = DiskIn {
+  numChannels :: S.UGen,
+  bufnum :: S.UGen,
+  loop :: S.UGen
+  } deriving (Show)
+diskIn :: DiskIn
+diskIn = DiskIn {
+  numChannels = 0.0,
+  bufnum = 0.0,
+  loop = 0.0
+  }
+mkDiskIn :: DiskIn -> S.UGen
+mkDiskIn (DiskIn  a' b' c') = S.mkOsc S.AR "DiskIn" [a',b',c'] 1
+instance Make DiskIn where
+  ugen = mkDiskIn
diff --git a/Sound/SC3/UGen/Record/DiskOut.hs b/Sound/SC3/UGen/Record/DiskOut.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DiskOut.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.DiskOut where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DiskOut = DiskOut {
+  bufnum :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+diskOut :: DiskOut
+diskOut = DiskOut {
+  bufnum = 0.0,
+  input = 0.0
+  }
+mkDiskOut :: DiskOut -> S.UGen
+mkDiskOut (DiskOut  a' b') = S.mkOsc S.AR "DiskOut" [a',b'] 1
+instance Make DiskOut where
+  ugen = mkDiskOut
diff --git a/Sound/SC3/UGen/Record/Diwhite.hs b/Sound/SC3/UGen/Record/Diwhite.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Diwhite.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Diwhite where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Diwhite = Diwhite {
+  lo :: S.UGen,
+  hi :: S.UGen,
+  length_ :: S.UGen
+  } deriving (Show)
+diwhite :: Diwhite
+diwhite = Diwhite {
+  lo = 0.0,
+  hi = 1.0,
+  length_ = 100000000.0
+  }
+mkDiwhite :: Diwhite -> S.UGen
+mkDiwhite (Diwhite  a' b' c') = S.mkOsc S.DR "Diwhite" [a',b',c'] 1
+instance Make Diwhite where
+  ugen = mkDiwhite
diff --git a/Sound/SC3/UGen/Record/Donce.hs b/Sound/SC3/UGen/Record/Donce.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Donce.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.Donce where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Donce = Donce {
+  input :: S.UGen
+  } deriving (Show)
+donce :: Donce
+donce = Donce {
+  input = 0.0
+  }
+mkDonce :: Donce -> S.UGen
+mkDonce (Donce  a') = S.mkOsc S.DR "Donce" [a'] 1
+instance Make Donce where
+  ugen = mkDonce
diff --git a/Sound/SC3/UGen/Record/Done.hs b/Sound/SC3/UGen/Record/Done.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Done.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.Done where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Done = Done {
+  src :: S.UGen
+  } deriving (Show)
+done :: Done
+done = Done {
+  src = 0.0
+  }
+mkDone :: Done -> S.UGen
+mkDone (Done  a') = S.mkOsc S.KR "Done" [a'] 1
+instance Make Done where
+  ugen = mkDone
diff --git a/Sound/SC3/UGen/Record/Dpoll.hs b/Sound/SC3/UGen/Record/Dpoll.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dpoll.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.Dpoll where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dpoll = Dpoll {
+  input :: S.UGen
+  } deriving (Show)
+dpoll :: Dpoll
+dpoll = Dpoll {
+  input = 0.0
+  }
+mkDpoll :: Dpoll -> S.UGen
+mkDpoll (Dpoll  a') = S.mkOsc S.DR "Dpoll" [a'] 1
+instance Make Dpoll where
+  ugen = mkDpoll
diff --git a/Sound/SC3/UGen/Record/Drand.hs b/Sound/SC3/UGen/Record/Drand.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Drand.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Drand where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Drand = Drand {
+  list :: S.UGen,
+  repeats :: S.UGen
+  } deriving (Show)
+drand :: Drand
+drand = Drand {
+  list = 0.0,
+  repeats = 1.0
+  }
+mkDrand :: Drand -> S.UGen
+mkDrand (Drand  a' b') = S.mkOsc S.DR "Drand" [a',b'] 1
+instance Make Drand where
+  ugen = mkDrand
diff --git a/Sound/SC3/UGen/Record/Dseq.hs b/Sound/SC3/UGen/Record/Dseq.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dseq.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Dseq where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dseq = Dseq {
+  list :: S.UGen,
+  repeats :: S.UGen
+  } deriving (Show)
+dseq :: Dseq
+dseq = Dseq {
+  list = 0.0,
+  repeats = 1.0
+  }
+mkDseq :: Dseq -> S.UGen
+mkDseq (Dseq  a' b') = S.mkOsc S.DR "Dseq" [a',b'] 1
+instance Make Dseq where
+  ugen = mkDseq
diff --git a/Sound/SC3/UGen/Record/Dser.hs b/Sound/SC3/UGen/Record/Dser.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dser.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Dser where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dser = Dser {
+  list :: S.UGen,
+  repeats :: S.UGen
+  } deriving (Show)
+dser :: Dser
+dser = Dser {
+  list = 0.0,
+  repeats = 1.0
+  }
+mkDser :: Dser -> S.UGen
+mkDser (Dser  a' b') = S.mkOsc S.DR "Dser" [a',b'] 1
+instance Make Dser where
+  ugen = mkDser
diff --git a/Sound/SC3/UGen/Record/Dseries.hs b/Sound/SC3/UGen/Record/Dseries.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dseries.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Dseries where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dseries = Dseries {
+  start :: S.UGen,
+  step :: S.UGen,
+  length_ :: S.UGen
+  } deriving (Show)
+dseries :: Dseries
+dseries = Dseries {
+  start = 1.0,
+  step = 1.0,
+  length_ = 100.0
+  }
+mkDseries :: Dseries -> S.UGen
+mkDseries (Dseries  a' b' c') = S.mkOsc S.DR "Dseries" [a',b',c'] 1
+instance Make Dseries where
+  ugen = mkDseries
diff --git a/Sound/SC3/UGen/Record/Dstutter.hs b/Sound/SC3/UGen/Record/Dstutter.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dstutter.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Dstutter where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dstutter = Dstutter {
+  n :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+dstutter :: Dstutter
+dstutter = Dstutter {
+  n = 0.0,
+  input = 0.0
+  }
+mkDstutter :: Dstutter -> S.UGen
+mkDstutter (Dstutter  a' b') = S.mkOsc S.DR "Dstutter" [a',b'] 1
+instance Make Dstutter where
+  ugen = mkDstutter
diff --git a/Sound/SC3/UGen/Record/Dswitch.hs b/Sound/SC3/UGen/Record/Dswitch.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dswitch.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Dswitch where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dswitch = Dswitch {
+  list :: S.UGen,
+  index :: S.UGen
+  } deriving (Show)
+dswitch :: Dswitch
+dswitch = Dswitch {
+  list = 0.0,
+  index = 0.0
+  }
+mkDswitch :: Dswitch -> S.UGen
+mkDswitch (Dswitch  a' b') = S.mkOsc S.DR "Dswitch" [a',b'] 1
+instance Make Dswitch where
+  ugen = mkDswitch
diff --git a/Sound/SC3/UGen/Record/Dswitch1.hs b/Sound/SC3/UGen/Record/Dswitch1.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dswitch1.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Dswitch1 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dswitch1 = Dswitch1 {
+  list :: S.UGen,
+  index :: S.UGen
+  } deriving (Show)
+dswitch1 :: Dswitch1
+dswitch1 = Dswitch1 {
+  list = 0.0,
+  index = 0.0
+  }
+mkDswitch1 :: Dswitch1 -> S.UGen
+mkDswitch1 (Dswitch1  a' b') = S.mkOsc S.DR "Dswitch1" [a',b'] 1
+instance Make Dswitch1 where
+  ugen = mkDswitch1
diff --git a/Sound/SC3/UGen/Record/Dust.hs b/Sound/SC3/UGen/Record/Dust.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dust.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Dust where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dust = Dust {
+  rate :: S.Rate,
+  density :: S.UGen
+  } deriving (Show)
+dust :: Dust
+dust = Dust {
+  rate = S.AR,
+  density = 0.0
+  }
+mkDust :: Dust -> S.UGen
+mkDust (Dust r a') = S.mkOsc r "Dust" [a'] 1
+instance Make Dust where
+  ugen = mkDust
diff --git a/Sound/SC3/UGen/Record/Dust2.hs b/Sound/SC3/UGen/Record/Dust2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dust2.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Dust2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dust2 = Dust2 {
+  rate :: S.Rate,
+  density :: S.UGen
+  } deriving (Show)
+dust2 :: Dust2
+dust2 = Dust2 {
+  rate = S.AR,
+  density = 0.0
+  }
+mkDust2 :: Dust2 -> S.UGen
+mkDust2 (Dust2 r a') = S.mkOsc r "Dust2" [a'] 1
+instance Make Dust2 where
+  ugen = mkDust2
diff --git a/Sound/SC3/UGen/Record/Duty.hs b/Sound/SC3/UGen/Record/Duty.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Duty.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.Duty where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Duty = Duty {
+  rate :: S.Rate,
+  dur :: S.UGen,
+  reset :: S.UGen,
+  level :: S.UGen,
+  doneAction :: S.UGen
+  } deriving (Show)
+duty :: Duty
+duty = Duty {
+  rate = S.AR,
+  dur = 1.0,
+  reset = 0.0,
+  level = 1.0,
+  doneAction = 0.0
+  }
+mkDuty :: Duty -> S.UGen
+mkDuty (Duty r a' b' c' d') = S.mkOsc r "Duty" [a',b',c',d'] 1
+instance Make Duty where
+  ugen = mkDuty
diff --git a/Sound/SC3/UGen/Record/Dwhite.hs b/Sound/SC3/UGen/Record/Dwhite.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dwhite.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Dwhite where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dwhite = Dwhite {
+  lo :: S.UGen,
+  hi :: S.UGen,
+  length_ :: S.UGen
+  } deriving (Show)
+dwhite :: Dwhite
+dwhite = Dwhite {
+  lo = 0.0,
+  hi = 1.0,
+  length_ = 100000000.0
+  }
+mkDwhite :: Dwhite -> S.UGen
+mkDwhite (Dwhite  a' b' c') = S.mkOsc S.DR "Dwhite" [a',b',c'] 1
+instance Make Dwhite where
+  ugen = mkDwhite
diff --git a/Sound/SC3/UGen/Record/Dxrand.hs b/Sound/SC3/UGen/Record/Dxrand.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Dxrand.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Dxrand where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Dxrand = Dxrand {
+  list :: S.UGen,
+  repeats :: S.UGen
+  } deriving (Show)
+dxrand :: Dxrand
+dxrand = Dxrand {
+  list = 0.0,
+  repeats = 1.0
+  }
+mkDxrand :: Dxrand -> S.UGen
+mkDxrand (Dxrand  a' b') = S.mkOsc S.DR "Dxrand" [a',b'] 1
+instance Make Dxrand where
+  ugen = mkDxrand
diff --git a/Sound/SC3/UGen/Record/DynKlang.hs b/Sound/SC3/UGen/Record/DynKlang.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DynKlang.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.DynKlang where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DynKlang = DynKlang {
+  specificationsArrayRef :: S.UGen,
+  freqscale :: S.UGen,
+  freqoffset :: S.UGen
+  } deriving (Show)
+dynKlang :: DynKlang
+dynKlang = DynKlang {
+  specificationsArrayRef = 0.0,
+  freqscale = 1.0,
+  freqoffset = 0.0
+  }
+mkDynKlang :: DynKlang -> S.UGen
+mkDynKlang (DynKlang  a' b' c') = S.mkOsc S.AR "DynKlang" [a',b',c'] 1
+instance Make DynKlang where
+  ugen = mkDynKlang
diff --git a/Sound/SC3/UGen/Record/DynKlank.hs b/Sound/SC3/UGen/Record/DynKlank.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/DynKlank.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.DynKlank where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data DynKlank = DynKlank {
+  specificationsArrayRef :: S.UGen,
+  input :: S.UGen,
+  freqscale :: S.UGen,
+  freqoffset :: S.UGen,
+  decayscale :: S.UGen
+  } deriving (Show)
+dynKlank :: DynKlank
+dynKlank = DynKlank {
+  specificationsArrayRef = 0.0,
+  input = 0.0,
+  freqscale = 1.0,
+  freqoffset = 0.0,
+  decayscale = 1.0
+  }
+mkDynKlank :: DynKlank -> S.UGen
+mkDynKlank (DynKlank  a' b' c' d' e') = S.mkOsc S.AR "DynKlank" [a',b',c',d',e'] 1
+instance Make DynKlank where
+  ugen = mkDynKlank
diff --git a/Sound/SC3/UGen/Record/EnvGen.hs b/Sound/SC3/UGen/Record/EnvGen.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/EnvGen.hs
@@ -0,0 +1,26 @@
+module Sound.SC3.UGen.Record.EnvGen where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data EnvGen = EnvGen {
+  rate :: S.Rate,
+  envelope :: S.UGen,
+  gate :: S.UGen,
+  levelScale :: S.UGen,
+  levelBias :: S.UGen,
+  timeScale :: S.UGen,
+  doneAction :: S.UGen
+  } deriving (Show)
+envGen :: EnvGen
+envGen = EnvGen {
+  rate = S.AR,
+  envelope = 0.0,
+  gate = 1.0,
+  levelScale = 1.0,
+  levelBias = 0.0,
+  timeScale = 1.0,
+  doneAction = 0.0
+  }
+mkEnvGen :: EnvGen -> S.UGen
+mkEnvGen (EnvGen r a' b' c' d' e' f') = S.mkOsc r "EnvGen" [a',b',c',d',e',f'] 1
+instance Make EnvGen where
+  ugen = mkEnvGen
diff --git a/Sound/SC3/UGen/Record/ExpRand.hs b/Sound/SC3/UGen/Record/ExpRand.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/ExpRand.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.ExpRand where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data ExpRand = ExpRand {
+  lo :: S.UGen,
+  hi :: S.UGen
+  } deriving (Show)
+expRand :: ExpRand
+expRand = ExpRand {
+  lo = 0.01,
+  hi = 1.0
+  }
+mkExpRand :: ExpRand -> S.UGen
+mkExpRand (ExpRand  a' b') = S.mkOsc S.IR "ExpRand" [a',b'] 1
+instance Make ExpRand where
+  ugen = mkExpRand
diff --git a/Sound/SC3/UGen/Record/FBSineC.hs b/Sound/SC3/UGen/Record/FBSineC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/FBSineC.hs
@@ -0,0 +1,26 @@
+module Sound.SC3.UGen.Record.FBSineC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data FBSineC = FBSineC {
+  freq :: S.UGen,
+  im :: S.UGen,
+  fb :: S.UGen,
+  a :: S.UGen,
+  c :: S.UGen,
+  xi :: S.UGen,
+  yi :: S.UGen
+  } deriving (Show)
+fBSineC :: FBSineC
+fBSineC = FBSineC {
+  freq = 22050.0,
+  im = 1.0,
+  fb = 0.1,
+  a = 1.1,
+  c = 0.5,
+  xi = 0.1,
+  yi = 0.1
+  }
+mkFBSineC :: FBSineC -> S.UGen
+mkFBSineC (FBSineC  a' b' c' d' e' f' g') = S.mkOsc S.AR "FBSineC" [a',b',c',d',e',f',g'] 1
+instance Make FBSineC where
+  ugen = mkFBSineC
diff --git a/Sound/SC3/UGen/Record/FBSineL.hs b/Sound/SC3/UGen/Record/FBSineL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/FBSineL.hs
@@ -0,0 +1,26 @@
+module Sound.SC3.UGen.Record.FBSineL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data FBSineL = FBSineL {
+  freq :: S.UGen,
+  im :: S.UGen,
+  fb :: S.UGen,
+  a :: S.UGen,
+  c :: S.UGen,
+  xi :: S.UGen,
+  yi :: S.UGen
+  } deriving (Show)
+fBSineL :: FBSineL
+fBSineL = FBSineL {
+  freq = 22050.0,
+  im = 1.0,
+  fb = 0.1,
+  a = 1.1,
+  c = 0.5,
+  xi = 0.1,
+  yi = 0.1
+  }
+mkFBSineL :: FBSineL -> S.UGen
+mkFBSineL (FBSineL  a' b' c' d' e' f' g') = S.mkOsc S.AR "FBSineL" [a',b',c',d',e',f',g'] 1
+instance Make FBSineL where
+  ugen = mkFBSineL
diff --git a/Sound/SC3/UGen/Record/FBSineN.hs b/Sound/SC3/UGen/Record/FBSineN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/FBSineN.hs
@@ -0,0 +1,26 @@
+module Sound.SC3.UGen.Record.FBSineN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data FBSineN = FBSineN {
+  freq :: S.UGen,
+  im :: S.UGen,
+  fb :: S.UGen,
+  a :: S.UGen,
+  c :: S.UGen,
+  xi :: S.UGen,
+  yi :: S.UGen
+  } deriving (Show)
+fBSineN :: FBSineN
+fBSineN = FBSineN {
+  freq = 22050.0,
+  im = 1.0,
+  fb = 0.1,
+  a = 1.1,
+  c = 0.5,
+  xi = 0.1,
+  yi = 0.1
+  }
+mkFBSineN :: FBSineN -> S.UGen
+mkFBSineN (FBSineN  a' b' c' d' e' f' g') = S.mkOsc S.AR "FBSineN" [a',b',c',d',e',f',g'] 1
+instance Make FBSineN where
+  ugen = mkFBSineN
diff --git a/Sound/SC3/UGen/Record/FFT.hs b/Sound/SC3/UGen/Record/FFT.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/FFT.hs
@@ -0,0 +1,24 @@
+module Sound.SC3.UGen.Record.FFT where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data FFT = FFT {
+  buffer :: S.UGen,
+  input :: S.UGen,
+  hop :: S.UGen,
+  wintype :: S.UGen,
+  active :: S.UGen,
+  winsize :: S.UGen
+  } deriving (Show)
+fFT :: FFT
+fFT = FFT {
+  buffer = 0.0,
+  input = 0.0,
+  hop = 0.5,
+  wintype = 0.0,
+  active = 1.0,
+  winsize = 0.0
+  }
+mkFFT :: FFT -> S.UGen
+mkFFT (FFT  a' b' c' d' e' f') = S.mkOsc S.KR "FFT" [a',b',c',d',e',f'] 1
+instance Make FFT where
+  ugen = mkFFT
diff --git a/Sound/SC3/UGen/Record/FFTTrigger.hs b/Sound/SC3/UGen/Record/FFTTrigger.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/FFTTrigger.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.FFTTrigger where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data FFTTrigger = FFTTrigger {
+  buffer :: S.UGen,
+  hop :: S.UGen,
+  polar :: S.UGen
+  } deriving (Show)
+fFTTrigger :: FFTTrigger
+fFTTrigger = FFTTrigger {
+  buffer = 0.0,
+  hop = 0.5,
+  polar = 0.0
+  }
+mkFFTTrigger :: FFTTrigger -> S.UGen
+mkFFTTrigger (FFTTrigger  a' b' c') = S.mkOsc S.KR "FFTTrigger" [a',b',c'] 1
+instance Make FFTTrigger where
+  ugen = mkFFTTrigger
diff --git a/Sound/SC3/UGen/Record/FOS.hs b/Sound/SC3/UGen/Record/FOS.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/FOS.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.FOS where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data FOS = FOS {
+  rate :: S.Rate,
+  input :: S.UGen,
+  a0 :: S.UGen,
+  a1 :: S.UGen,
+  b1 :: S.UGen
+  } deriving (Show)
+fOS :: FOS
+fOS = FOS {
+  rate = S.AR,
+  input = 0.0,
+  a0 = 0.0,
+  a1 = 0.0,
+  b1 = 0.0
+  }
+mkFOS :: FOS -> S.UGen
+mkFOS (FOS r a' b' c' d') = S.mkOsc r "FOS" [a',b',c',d'] 1
+instance Make FOS where
+  ugen = mkFOS
diff --git a/Sound/SC3/UGen/Record/FSinOsc.hs b/Sound/SC3/UGen/Record/FSinOsc.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/FSinOsc.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.FSinOsc where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data FSinOsc = FSinOsc {
+  rate :: S.Rate,
+  freq :: S.UGen,
+  iphase :: S.UGen
+  } deriving (Show)
+fSinOsc :: FSinOsc
+fSinOsc = FSinOsc {
+  rate = S.AR,
+  freq = 440.0,
+  iphase = 0.0
+  }
+mkFSinOsc :: FSinOsc -> S.UGen
+mkFSinOsc (FSinOsc r a' b') = S.mkOsc r "FSinOsc" [a',b'] 1
+instance Make FSinOsc where
+  ugen = mkFSinOsc
diff --git a/Sound/SC3/UGen/Record/Filter.hs b/Sound/SC3/UGen/Record/Filter.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Filter.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.Filter where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Filter = Filter {
+  maxSize :: S.UGen
+  } deriving (Show)
+filter :: Filter
+filter = Filter {
+  maxSize = 0.0
+  }
+mkFilter :: Filter -> S.UGen
+mkFilter (Filter  a') = S.mkOsc S.AR "Filter" [a'] 1
+instance Make Filter where
+  ugen = mkFilter
diff --git a/Sound/SC3/UGen/Record/Fold.hs b/Sound/SC3/UGen/Record/Fold.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Fold.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Fold where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Fold = Fold {
+  rate :: S.Rate,
+  input :: S.UGen,
+  lo :: S.UGen,
+  hi :: S.UGen
+  } deriving (Show)
+fold :: Fold
+fold = Fold {
+  rate = S.AR,
+  input = 0.0,
+  lo = 0.0,
+  hi = 1.0
+  }
+mkFold :: Fold -> S.UGen
+mkFold (Fold r a' b' c') = S.mkOsc r "Fold" [a',b',c'] 1
+instance Make Fold where
+  ugen = mkFold
diff --git a/Sound/SC3/UGen/Record/Formant.hs b/Sound/SC3/UGen/Record/Formant.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Formant.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Formant where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Formant = Formant {
+  fundfreq :: S.UGen,
+  formfreq :: S.UGen,
+  bwfreq :: S.UGen
+  } deriving (Show)
+formant :: Formant
+formant = Formant {
+  fundfreq = 440.0,
+  formfreq = 1760.0,
+  bwfreq = 880.0
+  }
+mkFormant :: Formant -> S.UGen
+mkFormant (Formant  a' b' c') = S.mkOsc S.AR "Formant" [a',b',c'] 1
+instance Make Formant where
+  ugen = mkFormant
diff --git a/Sound/SC3/UGen/Record/Formlet.hs b/Sound/SC3/UGen/Record/Formlet.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Formlet.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.Formlet where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Formlet = Formlet {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen,
+  attacktime :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+formlet :: Formlet
+formlet = Formlet {
+  rate = S.AR,
+  input = 0.0,
+  freq = 440.0,
+  attacktime = 1.0,
+  decaytime = 1.0
+  }
+mkFormlet :: Formlet -> S.UGen
+mkFormlet (Formlet r a' b' c' d') = S.mkOsc r "Formlet" [a',b',c',d'] 1
+instance Make Formlet where
+  ugen = mkFormlet
diff --git a/Sound/SC3/UGen/Record/Free.hs b/Sound/SC3/UGen/Record/Free.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Free.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Free where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Free = Free {
+  trig :: S.UGen,
+  id_ :: S.UGen
+  } deriving (Show)
+free :: Free
+free = Free {
+  trig = 0.0,
+  id_ = 0.0
+  }
+mkFree :: Free -> S.UGen
+mkFree (Free  a' b') = S.mkOsc S.KR "Free" [a',b'] 1
+instance Make Free where
+  ugen = mkFree
diff --git a/Sound/SC3/UGen/Record/FreeSelf.hs b/Sound/SC3/UGen/Record/FreeSelf.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/FreeSelf.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.FreeSelf where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data FreeSelf = FreeSelf {
+  input :: S.UGen
+  } deriving (Show)
+freeSelf :: FreeSelf
+freeSelf = FreeSelf {
+  input = 0.0
+  }
+mkFreeSelf :: FreeSelf -> S.UGen
+mkFreeSelf (FreeSelf  a') = S.mkOsc S.KR "FreeSelf" [a'] 1
+instance Make FreeSelf where
+  ugen = mkFreeSelf
diff --git a/Sound/SC3/UGen/Record/FreeSelfWhenDone.hs b/Sound/SC3/UGen/Record/FreeSelfWhenDone.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/FreeSelfWhenDone.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.FreeSelfWhenDone where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data FreeSelfWhenDone = FreeSelfWhenDone {
+  src :: S.UGen
+  } deriving (Show)
+freeSelfWhenDone :: FreeSelfWhenDone
+freeSelfWhenDone = FreeSelfWhenDone {
+  src = 0.0
+  }
+mkFreeSelfWhenDone :: FreeSelfWhenDone -> S.UGen
+mkFreeSelfWhenDone (FreeSelfWhenDone  a') = S.mkOsc S.KR "FreeSelfWhenDone" [a'] 1
+instance Make FreeSelfWhenDone where
+  ugen = mkFreeSelfWhenDone
diff --git a/Sound/SC3/UGen/Record/FreeVerb.hs b/Sound/SC3/UGen/Record/FreeVerb.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/FreeVerb.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.FreeVerb where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data FreeVerb = FreeVerb {
+  input :: S.UGen,
+  mix :: S.UGen,
+  room :: S.UGen,
+  damp :: S.UGen
+  } deriving (Show)
+freeVerb :: FreeVerb
+freeVerb = FreeVerb {
+  input = 0.0,
+  mix = 0.33,
+  room = 0.5,
+  damp = 0.5
+  }
+mkFreeVerb :: FreeVerb -> S.UGen
+mkFreeVerb (FreeVerb  a' b' c' d') = S.mkOsc S.AR "FreeVerb" [a',b',c',d'] 1
+instance Make FreeVerb where
+  ugen = mkFreeVerb
diff --git a/Sound/SC3/UGen/Record/FreeVerb2.hs b/Sound/SC3/UGen/Record/FreeVerb2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/FreeVerb2.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.FreeVerb2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data FreeVerb2 = FreeVerb2 {
+  input :: S.UGen,
+  in2 :: S.UGen,
+  mix :: S.UGen,
+  room :: S.UGen,
+  damp :: S.UGen
+  } deriving (Show)
+freeVerb2 :: FreeVerb2
+freeVerb2 = FreeVerb2 {
+  input = 0.0,
+  in2 = 0.0,
+  mix = 0.33,
+  room = 0.5,
+  damp = 0.5
+  }
+mkFreeVerb2 :: FreeVerb2 -> S.UGen
+mkFreeVerb2 (FreeVerb2  a' b' c' d' e') = S.mkOsc S.AR "FreeVerb2" [a',b',c',d',e'] 2
+instance Make FreeVerb2 where
+  ugen = mkFreeVerb2
diff --git a/Sound/SC3/UGen/Record/FreqShift.hs b/Sound/SC3/UGen/Record/FreqShift.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/FreqShift.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.FreqShift where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data FreqShift = FreqShift {
+  input :: S.UGen,
+  freq :: S.UGen,
+  phase :: S.UGen
+  } deriving (Show)
+freqShift :: FreqShift
+freqShift = FreqShift {
+  input = 0.0,
+  freq = 0.0,
+  phase = 0.0
+  }
+mkFreqShift :: FreqShift -> S.UGen
+mkFreqShift (FreqShift  a' b' c') = S.mkOsc S.AR "FreqShift" [a',b',c'] 1
+instance Make FreqShift where
+  ugen = mkFreqShift
diff --git a/Sound/SC3/UGen/Record/GVerb.hs b/Sound/SC3/UGen/Record/GVerb.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/GVerb.hs
@@ -0,0 +1,32 @@
+module Sound.SC3.UGen.Record.GVerb where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data GVerb = GVerb {
+  input :: S.UGen,
+  roomsize :: S.UGen,
+  revtime :: S.UGen,
+  damping :: S.UGen,
+  inputbw :: S.UGen,
+  spread :: S.UGen,
+  drylevel :: S.UGen,
+  earlyreflevel :: S.UGen,
+  taillevel :: S.UGen,
+  maxroomsize :: S.UGen
+  } deriving (Show)
+gVerb :: GVerb
+gVerb = GVerb {
+  input = 0.0,
+  roomsize = 10.0,
+  revtime = 3.0,
+  damping = 0.5,
+  inputbw = 0.5,
+  spread = 15.0,
+  drylevel = 1.0,
+  earlyreflevel = 0.7,
+  taillevel = 0.5,
+  maxroomsize = 300.0
+  }
+mkGVerb :: GVerb -> S.UGen
+mkGVerb (GVerb  a' b' c' d' e' f' g' h' i' j') = S.mkOsc S.AR "GVerb" [a',b',c',d',e',f',g',h',i',j'] 2
+instance Make GVerb where
+  ugen = mkGVerb
diff --git a/Sound/SC3/UGen/Record/Gate.hs b/Sound/SC3/UGen/Record/Gate.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Gate.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Gate where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Gate = Gate {
+  rate :: S.Rate,
+  input :: S.UGen,
+  trig :: S.UGen
+  } deriving (Show)
+gate :: Gate
+gate = Gate {
+  rate = S.AR,
+  input = 0.0,
+  trig = 0.0
+  }
+mkGate :: Gate -> S.UGen
+mkGate (Gate r a' b') = S.mkOsc r "Gate" [a',b'] 1
+instance Make Gate where
+  ugen = mkGate
diff --git a/Sound/SC3/UGen/Record/GbmanL.hs b/Sound/SC3/UGen/Record/GbmanL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/GbmanL.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.GbmanL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data GbmanL = GbmanL {
+  freq :: S.UGen,
+  xi :: S.UGen,
+  yi :: S.UGen
+  } deriving (Show)
+gbmanL :: GbmanL
+gbmanL = GbmanL {
+  freq = 22050.0,
+  xi = 1.2,
+  yi = 2.1
+  }
+mkGbmanL :: GbmanL -> S.UGen
+mkGbmanL (GbmanL  a' b' c') = S.mkOsc S.AR "GbmanL" [a',b',c'] 1
+instance Make GbmanL where
+  ugen = mkGbmanL
diff --git a/Sound/SC3/UGen/Record/GbmanN.hs b/Sound/SC3/UGen/Record/GbmanN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/GbmanN.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.GbmanN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data GbmanN = GbmanN {
+  freq :: S.UGen,
+  xi :: S.UGen,
+  yi :: S.UGen
+  } deriving (Show)
+gbmanN :: GbmanN
+gbmanN = GbmanN {
+  freq = 22050.0,
+  xi = 1.2,
+  yi = 2.1
+  }
+mkGbmanN :: GbmanN -> S.UGen
+mkGbmanN (GbmanN  a' b' c') = S.mkOsc S.AR "GbmanN" [a',b',c'] 1
+instance Make GbmanN where
+  ugen = mkGbmanN
diff --git a/Sound/SC3/UGen/Record/Gendy1.hs b/Sound/SC3/UGen/Record/Gendy1.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Gendy1.hs
@@ -0,0 +1,34 @@
+module Sound.SC3.UGen.Record.Gendy1 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Gendy1 = Gendy1 {
+  rate :: S.Rate,
+  ampdist :: S.UGen,
+  durdist :: S.UGen,
+  adparam :: S.UGen,
+  ddparam :: S.UGen,
+  minfreq :: S.UGen,
+  maxfreq :: S.UGen,
+  ampscale :: S.UGen,
+  durscale :: S.UGen,
+  initCPs :: S.UGen,
+  knum :: S.UGen
+  } deriving (Show)
+gendy1 :: Gendy1
+gendy1 = Gendy1 {
+  rate = S.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
+  }
+mkGendy1 :: Gendy1 -> S.UGen
+mkGendy1 (Gendy1 r a' b' c' d' e' f' g' h' i' j') = S.mkOsc r "Gendy1" [a',b',c',d',e',f',g',h',i',j'] 1
+instance Make Gendy1 where
+  ugen = mkGendy1
diff --git a/Sound/SC3/UGen/Record/Gendy2.hs b/Sound/SC3/UGen/Record/Gendy2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Gendy2.hs
@@ -0,0 +1,38 @@
+module Sound.SC3.UGen.Record.Gendy2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Gendy2 = Gendy2 {
+  rate :: S.Rate,
+  ampdist :: S.UGen,
+  durdist :: S.UGen,
+  adparam :: S.UGen,
+  ddparam :: S.UGen,
+  minfreq :: S.UGen,
+  maxfreq :: S.UGen,
+  ampscale :: S.UGen,
+  durscale :: S.UGen,
+  initCPs :: S.UGen,
+  knum :: S.UGen,
+  a :: S.UGen,
+  c :: S.UGen
+  } deriving (Show)
+gendy2 :: Gendy2
+gendy2 = Gendy2 {
+  rate = S.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,
+  a = 1.17,
+  c = 0.31
+  }
+mkGendy2 :: Gendy2 -> S.UGen
+mkGendy2 (Gendy2 r a' b' c' d' e' f' g' h' i' j' k' l') = S.mkOsc r "Gendy2" [a',b',c',d',e',f',g',h',i',j',k',l'] 1
+instance Make Gendy2 where
+  ugen = mkGendy2
diff --git a/Sound/SC3/UGen/Record/Gendy3.hs b/Sound/SC3/UGen/Record/Gendy3.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Gendy3.hs
@@ -0,0 +1,32 @@
+module Sound.SC3.UGen.Record.Gendy3 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Gendy3 = Gendy3 {
+  rate :: S.Rate,
+  ampdist :: S.UGen,
+  durdist :: S.UGen,
+  adparam :: S.UGen,
+  ddparam :: S.UGen,
+  freq :: S.UGen,
+  ampscale :: S.UGen,
+  durscale :: S.UGen,
+  initCPs :: S.UGen,
+  knum :: S.UGen
+  } deriving (Show)
+gendy3 :: Gendy3
+gendy3 = Gendy3 {
+  rate = S.AR,
+  ampdist = 1.0,
+  durdist = 1.0,
+  adparam = 1.0,
+  ddparam = 1.0,
+  freq = 440.0,
+  ampscale = 0.5,
+  durscale = 0.5,
+  initCPs = 12.0,
+  knum = 0.0
+  }
+mkGendy3 :: Gendy3 -> S.UGen
+mkGendy3 (Gendy3 r a' b' c' d' e' f' g' h' i') = S.mkOsc r "Gendy3" [a',b',c',d',e',f',g',h',i'] 1
+instance Make Gendy3 where
+  ugen = mkGendy3
diff --git a/Sound/SC3/UGen/Record/GrainBuf.hs b/Sound/SC3/UGen/Record/GrainBuf.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/GrainBuf.hs
@@ -0,0 +1,30 @@
+module Sound.SC3.UGen.Record.GrainBuf where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data GrainBuf = GrainBuf {
+  numChannels :: S.UGen,
+  trigger :: S.UGen,
+  dur :: S.UGen,
+  sndbuf :: S.UGen,
+  rate_ :: S.UGen,
+  pos :: S.UGen,
+  interp :: S.UGen,
+  pan :: S.UGen,
+  envbufnum :: S.UGen
+  } deriving (Show)
+grainBuf :: GrainBuf
+grainBuf = GrainBuf {
+  numChannels = 1.0,
+  trigger = 0.0,
+  dur = 1.0,
+  sndbuf = 0.0,
+  rate_ = 1.0,
+  pos = 0.0,
+  interp = 2.0,
+  pan = 0.0,
+  envbufnum = -1.0
+  }
+mkGrainBuf :: GrainBuf -> S.UGen
+mkGrainBuf (GrainBuf  a' b' c' d' e' f' g' h' i') = S.mkOsc S.AR "GrainBuf" [a',b',c',d',e',f',g',h',i'] 1
+instance Make GrainBuf where
+  ugen = mkGrainBuf
diff --git a/Sound/SC3/UGen/Record/GrainFM.hs b/Sound/SC3/UGen/Record/GrainFM.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/GrainFM.hs
@@ -0,0 +1,28 @@
+module Sound.SC3.UGen.Record.GrainFM where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data GrainFM = GrainFM {
+  numChannels :: S.UGen,
+  trigger :: S.UGen,
+  dur :: S.UGen,
+  carfreq :: S.UGen,
+  modfreq :: S.UGen,
+  index :: S.UGen,
+  pan :: S.UGen,
+  envbufnum :: S.UGen
+  } deriving (Show)
+grainFM :: GrainFM
+grainFM = GrainFM {
+  numChannels = 1.0,
+  trigger = 0.0,
+  dur = 1.0,
+  carfreq = 440.0,
+  modfreq = 200.0,
+  index = 1.0,
+  pan = 0.0,
+  envbufnum = -1.0
+  }
+mkGrainFM :: GrainFM -> S.UGen
+mkGrainFM (GrainFM  a' b' c' d' e' f' g' h') = S.mkOsc S.AR "GrainFM" [a',b',c',d',e',f',g',h'] 1
+instance Make GrainFM where
+  ugen = mkGrainFM
diff --git a/Sound/SC3/UGen/Record/GrainIn.hs b/Sound/SC3/UGen/Record/GrainIn.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/GrainIn.hs
@@ -0,0 +1,24 @@
+module Sound.SC3.UGen.Record.GrainIn where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data GrainIn = GrainIn {
+  numChannels :: S.UGen,
+  trigger :: S.UGen,
+  dur :: S.UGen,
+  input :: S.UGen,
+  pan :: S.UGen,
+  envbufnum :: S.UGen
+  } deriving (Show)
+grainIn :: GrainIn
+grainIn = GrainIn {
+  numChannels = 1.0,
+  trigger = 0.0,
+  dur = 1.0,
+  input = 0.0,
+  pan = 0.0,
+  envbufnum = -1.0
+  }
+mkGrainIn :: GrainIn -> S.UGen
+mkGrainIn (GrainIn  a' b' c' d' e' f') = S.mkOsc S.AR "GrainIn" [a',b',c',d',e',f'] 1
+instance Make GrainIn where
+  ugen = mkGrainIn
diff --git a/Sound/SC3/UGen/Record/GrainSin.hs b/Sound/SC3/UGen/Record/GrainSin.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/GrainSin.hs
@@ -0,0 +1,24 @@
+module Sound.SC3.UGen.Record.GrainSin where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data GrainSin = GrainSin {
+  numChannels :: S.UGen,
+  trigger :: S.UGen,
+  dur :: S.UGen,
+  freq :: S.UGen,
+  pan :: S.UGen,
+  envbufnum :: S.UGen
+  } deriving (Show)
+grainSin :: GrainSin
+grainSin = GrainSin {
+  numChannels = 1.0,
+  trigger = 0.0,
+  dur = 1.0,
+  freq = 440.0,
+  pan = 0.0,
+  envbufnum = -1.0
+  }
+mkGrainSin :: GrainSin -> S.UGen
+mkGrainSin (GrainSin  a' b' c' d' e' f') = S.mkOsc S.AR "GrainSin" [a',b',c',d',e',f'] 1
+instance Make GrainSin where
+  ugen = mkGrainSin
diff --git a/Sound/SC3/UGen/Record/HPF.hs b/Sound/SC3/UGen/Record/HPF.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/HPF.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.HPF where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data HPF = HPF {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen
+  } deriving (Show)
+hPF :: HPF
+hPF = HPF {
+  rate = S.AR,
+  input = 0.0,
+  freq = 440.0
+  }
+mkHPF :: HPF -> S.UGen
+mkHPF (HPF r a' b') = S.mkOsc r "HPF" [a',b'] 1
+instance Make HPF where
+  ugen = mkHPF
diff --git a/Sound/SC3/UGen/Record/HPZ1.hs b/Sound/SC3/UGen/Record/HPZ1.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/HPZ1.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.HPZ1 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data HPZ1 = HPZ1 {
+  rate :: S.Rate,
+  input :: S.UGen
+  } deriving (Show)
+hPZ1 :: HPZ1
+hPZ1 = HPZ1 {
+  rate = S.AR,
+  input = 0.0
+  }
+mkHPZ1 :: HPZ1 -> S.UGen
+mkHPZ1 (HPZ1 r a') = S.mkOsc r "HPZ1" [a'] 1
+instance Make HPZ1 where
+  ugen = mkHPZ1
diff --git a/Sound/SC3/UGen/Record/HPZ2.hs b/Sound/SC3/UGen/Record/HPZ2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/HPZ2.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.HPZ2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data HPZ2 = HPZ2 {
+  rate :: S.Rate,
+  input :: S.UGen
+  } deriving (Show)
+hPZ2 :: HPZ2
+hPZ2 = HPZ2 {
+  rate = S.AR,
+  input = 0.0
+  }
+mkHPZ2 :: HPZ2 -> S.UGen
+mkHPZ2 (HPZ2 r a') = S.mkOsc r "HPZ2" [a'] 1
+instance Make HPZ2 where
+  ugen = mkHPZ2
diff --git a/Sound/SC3/UGen/Record/Hasher.hs b/Sound/SC3/UGen/Record/Hasher.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Hasher.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Hasher where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Hasher = Hasher {
+  rate :: S.Rate,
+  input :: S.UGen
+  } deriving (Show)
+hasher :: Hasher
+hasher = Hasher {
+  rate = S.AR,
+  input = 0.0
+  }
+mkHasher :: Hasher -> S.UGen
+mkHasher (Hasher r a') = S.mkOsc r "Hasher" [a'] 1
+instance Make Hasher where
+  ugen = mkHasher
diff --git a/Sound/SC3/UGen/Record/HenonC.hs b/Sound/SC3/UGen/Record/HenonC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/HenonC.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.HenonC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data HenonC = HenonC {
+  freq :: S.UGen,
+  a :: S.UGen,
+  b :: S.UGen,
+  x0 :: S.UGen,
+  x1 :: S.UGen
+  } deriving (Show)
+henonC :: HenonC
+henonC = HenonC {
+  freq = 22050.0,
+  a = 1.4,
+  b = 0.3,
+  x0 = 0.0,
+  x1 = 0.0
+  }
+mkHenonC :: HenonC -> S.UGen
+mkHenonC (HenonC  a' b' c' d' e') = S.mkOsc S.AR "HenonC" [a',b',c',d',e'] 1
+instance Make HenonC where
+  ugen = mkHenonC
diff --git a/Sound/SC3/UGen/Record/HenonL.hs b/Sound/SC3/UGen/Record/HenonL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/HenonL.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.HenonL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data HenonL = HenonL {
+  freq :: S.UGen,
+  a :: S.UGen,
+  b :: S.UGen,
+  x0 :: S.UGen,
+  x1 :: S.UGen
+  } deriving (Show)
+henonL :: HenonL
+henonL = HenonL {
+  freq = 22050.0,
+  a = 1.4,
+  b = 0.3,
+  x0 = 0.0,
+  x1 = 0.0
+  }
+mkHenonL :: HenonL -> S.UGen
+mkHenonL (HenonL  a' b' c' d' e') = S.mkOsc S.AR "HenonL" [a',b',c',d',e'] 1
+instance Make HenonL where
+  ugen = mkHenonL
diff --git a/Sound/SC3/UGen/Record/HenonN.hs b/Sound/SC3/UGen/Record/HenonN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/HenonN.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.HenonN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data HenonN = HenonN {
+  freq :: S.UGen,
+  a :: S.UGen,
+  b :: S.UGen,
+  x0 :: S.UGen,
+  x1 :: S.UGen
+  } deriving (Show)
+henonN :: HenonN
+henonN = HenonN {
+  freq = 22050.0,
+  a = 1.4,
+  b = 0.3,
+  x0 = 0.0,
+  x1 = 0.0
+  }
+mkHenonN :: HenonN -> S.UGen
+mkHenonN (HenonN  a' b' c' d' e') = S.mkOsc S.AR "HenonN" [a',b',c',d',e'] 1
+instance Make HenonN where
+  ugen = mkHenonN
diff --git a/Sound/SC3/UGen/Record/Hilbert.hs b/Sound/SC3/UGen/Record/Hilbert.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Hilbert.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.Hilbert where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Hilbert = Hilbert {
+  input :: S.UGen
+  } deriving (Show)
+hilbert :: Hilbert
+hilbert = Hilbert {
+  input = 0.0
+  }
+mkHilbert :: Hilbert -> S.UGen
+mkHilbert (Hilbert  a') = S.mkOsc S.AR "Hilbert" [a'] 2
+instance Make Hilbert where
+  ugen = mkHilbert
diff --git a/Sound/SC3/UGen/Record/HilbertFIR.hs b/Sound/SC3/UGen/Record/HilbertFIR.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/HilbertFIR.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.HilbertFIR where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data HilbertFIR = HilbertFIR {
+  input :: S.UGen,
+  buffer :: S.UGen
+  } deriving (Show)
+hilbertFIR :: HilbertFIR
+hilbertFIR = HilbertFIR {
+  input = 0.0,
+  buffer = 0.0
+  }
+mkHilbertFIR :: HilbertFIR -> S.UGen
+mkHilbertFIR (HilbertFIR  a' b') = S.mkOsc S.AR "HilbertFIR" [a',b'] 1
+instance Make HilbertFIR where
+  ugen = mkHilbertFIR
diff --git a/Sound/SC3/UGen/Record/IEnvGen.hs b/Sound/SC3/UGen/Record/IEnvGen.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/IEnvGen.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.IEnvGen where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data IEnvGen = IEnvGen {
+  rate :: S.Rate,
+  ienvelope :: S.UGen,
+  index :: S.UGen
+  } deriving (Show)
+iEnvGen :: IEnvGen
+iEnvGen = IEnvGen {
+  rate = S.AR,
+  ienvelope = 0.0,
+  index = 0.0
+  }
+mkIEnvGen :: IEnvGen -> S.UGen
+mkIEnvGen (IEnvGen r a' b') = S.mkOsc r "IEnvGen" [a',b'] 1
+instance Make IEnvGen where
+  ugen = mkIEnvGen
diff --git a/Sound/SC3/UGen/Record/IFFT.hs b/Sound/SC3/UGen/Record/IFFT.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/IFFT.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.IFFT where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data IFFT = IFFT {
+  buffer :: S.UGen,
+  wintype :: S.UGen,
+  winsize :: S.UGen
+  } deriving (Show)
+iFFT :: IFFT
+iFFT = IFFT {
+  buffer = 0.0,
+  wintype = 0.0,
+  winsize = 0.0
+  }
+mkIFFT :: IFFT -> S.UGen
+mkIFFT (IFFT  a' b' c') = S.mkOsc S.AR "IFFT" [a',b',c'] 1
+instance Make IFFT where
+  ugen = mkIFFT
diff --git a/Sound/SC3/UGen/Record/IRand.hs b/Sound/SC3/UGen/Record/IRand.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/IRand.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.IRand where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data IRand = IRand {
+  lo :: S.UGen,
+  hi :: S.UGen
+  } deriving (Show)
+iRand :: IRand
+iRand = IRand {
+  lo = 0.0,
+  hi = 127.0
+  }
+mkIRand :: IRand -> S.UGen
+mkIRand (IRand  a' b') = S.mkOsc S.IR "IRand" [a',b'] 1
+instance Make IRand where
+  ugen = mkIRand
diff --git a/Sound/SC3/UGen/Record/Impulse.hs b/Sound/SC3/UGen/Record/Impulse.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Impulse.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Impulse where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Impulse = Impulse {
+  rate :: S.Rate,
+  freq :: S.UGen,
+  phase :: S.UGen
+  } deriving (Show)
+impulse :: Impulse
+impulse = Impulse {
+  rate = S.AR,
+  freq = 440.0,
+  phase = 0.0
+  }
+mkImpulse :: Impulse -> S.UGen
+mkImpulse (Impulse r a' b') = S.mkOsc r "Impulse" [a',b'] 1
+instance Make Impulse where
+  ugen = mkImpulse
diff --git a/Sound/SC3/UGen/Record/In.hs b/Sound/SC3/UGen/Record/In.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/In.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.In where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data In = In {
+  rate :: S.Rate,
+  bus :: S.UGen,
+  numChannels :: S.UGen
+  } deriving (Show)
+in' :: In
+in' = In {
+  rate = S.AR,
+  bus = 0.0,
+  numChannels = 1.0
+  }
+mkIn :: In -> S.UGen
+mkIn (In r a' b') = S.mkOsc r "In" [a',b'] 1
+instance Make In where
+  ugen = mkIn
diff --git a/Sound/SC3/UGen/Record/InFeedback.hs b/Sound/SC3/UGen/Record/InFeedback.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/InFeedback.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.InFeedback where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data InFeedback = InFeedback {
+  bus :: S.UGen,
+  numChannels :: S.UGen
+  } deriving (Show)
+inFeedback :: InFeedback
+inFeedback = InFeedback {
+  bus = 0.0,
+  numChannels = 1.0
+  }
+mkInFeedback :: InFeedback -> S.UGen
+mkInFeedback (InFeedback  a' b') = S.mkOsc S.AR "InFeedback" [a',b'] 1
+instance Make InFeedback where
+  ugen = mkInFeedback
diff --git a/Sound/SC3/UGen/Record/InRange.hs b/Sound/SC3/UGen/Record/InRange.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/InRange.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.InRange where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data InRange = InRange {
+  rate :: S.Rate,
+  input :: S.UGen,
+  lo :: S.UGen,
+  hi :: S.UGen
+  } deriving (Show)
+inRange :: InRange
+inRange = InRange {
+  rate = S.AR,
+  input = 0.0,
+  lo = 0.0,
+  hi = 1.0
+  }
+mkInRange :: InRange -> S.UGen
+mkInRange (InRange r a' b' c') = S.mkOsc r "InRange" [a',b',c'] 1
+instance Make InRange where
+  ugen = mkInRange
diff --git a/Sound/SC3/UGen/Record/InRect.hs b/Sound/SC3/UGen/Record/InRect.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/InRect.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.InRect where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data InRect = InRect {
+  rate :: S.Rate,
+  x :: S.UGen,
+  y :: S.UGen,
+  rect :: S.UGen
+  } deriving (Show)
+inRect :: InRect
+inRect = InRect {
+  rate = S.AR,
+  x = 0.0,
+  y = 0.0,
+  rect = 0.0
+  }
+mkInRect :: InRect -> S.UGen
+mkInRect (InRect r a' b' c') = S.mkOsc r "InRect" [a',b',c'] 1
+instance Make InRect where
+  ugen = mkInRect
diff --git a/Sound/SC3/UGen/Record/InTrig.hs b/Sound/SC3/UGen/Record/InTrig.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/InTrig.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.InTrig where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data InTrig = InTrig {
+  bus :: S.UGen,
+  numChannels :: S.UGen
+  } deriving (Show)
+inTrig :: InTrig
+inTrig = InTrig {
+  bus = 0.0,
+  numChannels = 1.0
+  }
+mkInTrig :: InTrig -> S.UGen
+mkInTrig (InTrig  a' b') = S.mkOsc S.KR "InTrig" [a',b'] 1
+instance Make InTrig where
+  ugen = mkInTrig
diff --git a/Sound/SC3/UGen/Record/Index.hs b/Sound/SC3/UGen/Record/Index.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Index.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Index where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Index = Index {
+  rate :: S.Rate,
+  bufnum :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+index :: Index
+index = Index {
+  rate = S.AR,
+  bufnum = 0.0,
+  input = 0.0
+  }
+mkIndex :: Index -> S.UGen
+mkIndex (Index r a' b') = S.mkOsc r "Index" [a',b'] 1
+instance Make Index where
+  ugen = mkIndex
diff --git a/Sound/SC3/UGen/Record/IndexInBetween.hs b/Sound/SC3/UGen/Record/IndexInBetween.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/IndexInBetween.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.IndexInBetween where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data IndexInBetween = IndexInBetween {
+  rate :: S.Rate,
+  bufnum :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+indexInBetween :: IndexInBetween
+indexInBetween = IndexInBetween {
+  rate = S.AR,
+  bufnum = 0.0,
+  input = 0.0
+  }
+mkIndexInBetween :: IndexInBetween -> S.UGen
+mkIndexInBetween (IndexInBetween r a' b') = S.mkOsc r "IndexInBetween" [a',b'] 1
+instance Make IndexInBetween where
+  ugen = mkIndexInBetween
diff --git a/Sound/SC3/UGen/Record/Integrator.hs b/Sound/SC3/UGen/Record/Integrator.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Integrator.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Integrator where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Integrator = Integrator {
+  rate :: S.Rate,
+  input :: S.UGen,
+  coef :: S.UGen
+  } deriving (Show)
+integrator :: Integrator
+integrator = Integrator {
+  rate = S.AR,
+  input = 0.0,
+  coef = 1.0
+  }
+mkIntegrator :: Integrator -> S.UGen
+mkIntegrator (Integrator r a' b') = S.mkOsc r "Integrator" [a',b'] 1
+instance Make Integrator where
+  ugen = mkIntegrator
diff --git a/Sound/SC3/UGen/Record/K2A.hs b/Sound/SC3/UGen/Record/K2A.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/K2A.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.K2A where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data K2A = K2A {
+  input :: S.UGen
+  } deriving (Show)
+k2A :: K2A
+k2A = K2A {
+  input = 0.0
+  }
+mkK2A :: K2A -> S.UGen
+mkK2A (K2A  a') = S.mkOsc S.AR "K2A" [a'] 1
+instance Make K2A where
+  ugen = mkK2A
diff --git a/Sound/SC3/UGen/Record/KeyState.hs b/Sound/SC3/UGen/Record/KeyState.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/KeyState.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.KeyState where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data KeyState = KeyState {
+  keycode :: S.UGen,
+  minval :: S.UGen,
+  maxval :: S.UGen,
+  lag :: S.UGen
+  } deriving (Show)
+keyState :: KeyState
+keyState = KeyState {
+  keycode = 0.0,
+  minval = 0.0,
+  maxval = 1.0,
+  lag = 0.2
+  }
+mkKeyState :: KeyState -> S.UGen
+mkKeyState (KeyState  a' b' c' d') = S.mkOsc S.KR "KeyState" [a',b',c',d'] 1
+instance Make KeyState where
+  ugen = mkKeyState
diff --git a/Sound/SC3/UGen/Record/KeyTrack.hs b/Sound/SC3/UGen/Record/KeyTrack.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/KeyTrack.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.KeyTrack where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data KeyTrack = KeyTrack {
+  chain :: S.UGen,
+  keydecay :: S.UGen,
+  chromaleak :: S.UGen
+  } deriving (Show)
+keyTrack :: KeyTrack
+keyTrack = KeyTrack {
+  chain = 0.0,
+  keydecay = 2.0,
+  chromaleak = 0.5
+  }
+mkKeyTrack :: KeyTrack -> S.UGen
+mkKeyTrack (KeyTrack  a' b' c') = S.mkOsc S.KR "KeyTrack" [a',b',c'] 1
+instance Make KeyTrack where
+  ugen = mkKeyTrack
diff --git a/Sound/SC3/UGen/Record/Klang.hs b/Sound/SC3/UGen/Record/Klang.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Klang.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Klang where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Klang = Klang {
+  specificationsArrayRef :: S.UGen,
+  freqscale :: S.UGen,
+  freqoffset :: S.UGen
+  } deriving (Show)
+klang :: Klang
+klang = Klang {
+  specificationsArrayRef = 0.0,
+  freqscale = 1.0,
+  freqoffset = 0.0
+  }
+mkKlang :: Klang -> S.UGen
+mkKlang (Klang  a' b' c') = S.mkOsc S.AR "Klang" [a',b',c'] 1
+instance Make Klang where
+  ugen = mkKlang
diff --git a/Sound/SC3/UGen/Record/Klank.hs b/Sound/SC3/UGen/Record/Klank.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Klank.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.Klank where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Klank = Klank {
+  specificationsArrayRef :: S.UGen,
+  input :: S.UGen,
+  freqscale :: S.UGen,
+  freqoffset :: S.UGen,
+  decayscale :: S.UGen
+  } deriving (Show)
+klank :: Klank
+klank = Klank {
+  specificationsArrayRef = 0.0,
+  input = 0.0,
+  freqscale = 1.0,
+  freqoffset = 0.0,
+  decayscale = 1.0
+  }
+mkKlank :: Klank -> S.UGen
+mkKlank (Klank  a' b' c' d' e') = S.mkOsc S.AR "Klank" [a',b',c',d',e'] 1
+instance Make Klank where
+  ugen = mkKlank
diff --git a/Sound/SC3/UGen/Record/LFClipNoise.hs b/Sound/SC3/UGen/Record/LFClipNoise.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LFClipNoise.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.LFClipNoise where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LFClipNoise = LFClipNoise {
+  rate :: S.Rate,
+  freq :: S.UGen
+  } deriving (Show)
+lFClipNoise :: LFClipNoise
+lFClipNoise = LFClipNoise {
+  rate = S.AR,
+  freq = 500.0
+  }
+mkLFClipNoise :: LFClipNoise -> S.UGen
+mkLFClipNoise (LFClipNoise r a') = S.mkOsc r "LFClipNoise" [a'] 1
+instance Make LFClipNoise where
+  ugen = mkLFClipNoise
diff --git a/Sound/SC3/UGen/Record/LFCub.hs b/Sound/SC3/UGen/Record/LFCub.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LFCub.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.LFCub where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LFCub = LFCub {
+  rate :: S.Rate,
+  freq :: S.UGen,
+  iphase :: S.UGen
+  } deriving (Show)
+lFCub :: LFCub
+lFCub = LFCub {
+  rate = S.AR,
+  freq = 440.0,
+  iphase = 0.0
+  }
+mkLFCub :: LFCub -> S.UGen
+mkLFCub (LFCub r a' b') = S.mkOsc r "LFCub" [a',b'] 1
+instance Make LFCub where
+  ugen = mkLFCub
diff --git a/Sound/SC3/UGen/Record/LFDClipNoise.hs b/Sound/SC3/UGen/Record/LFDClipNoise.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LFDClipNoise.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.LFDClipNoise where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LFDClipNoise = LFDClipNoise {
+  rate :: S.Rate,
+  freq :: S.UGen
+  } deriving (Show)
+lFDClipNoise :: LFDClipNoise
+lFDClipNoise = LFDClipNoise {
+  rate = S.AR,
+  freq = 500.0
+  }
+mkLFDClipNoise :: LFDClipNoise -> S.UGen
+mkLFDClipNoise (LFDClipNoise r a') = S.mkOsc r "LFDClipNoise" [a'] 1
+instance Make LFDClipNoise where
+  ugen = mkLFDClipNoise
diff --git a/Sound/SC3/UGen/Record/LFDNoise0.hs b/Sound/SC3/UGen/Record/LFDNoise0.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LFDNoise0.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.LFDNoise0 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LFDNoise0 = LFDNoise0 {
+  rate :: S.Rate,
+  freq :: S.UGen
+  } deriving (Show)
+lFDNoise0 :: LFDNoise0
+lFDNoise0 = LFDNoise0 {
+  rate = S.AR,
+  freq = 500.0
+  }
+mkLFDNoise0 :: LFDNoise0 -> S.UGen
+mkLFDNoise0 (LFDNoise0 r a') = S.mkOsc r "LFDNoise0" [a'] 1
+instance Make LFDNoise0 where
+  ugen = mkLFDNoise0
diff --git a/Sound/SC3/UGen/Record/LFDNoise1.hs b/Sound/SC3/UGen/Record/LFDNoise1.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LFDNoise1.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.LFDNoise1 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LFDNoise1 = LFDNoise1 {
+  rate :: S.Rate,
+  freq :: S.UGen
+  } deriving (Show)
+lFDNoise1 :: LFDNoise1
+lFDNoise1 = LFDNoise1 {
+  rate = S.AR,
+  freq = 500.0
+  }
+mkLFDNoise1 :: LFDNoise1 -> S.UGen
+mkLFDNoise1 (LFDNoise1 r a') = S.mkOsc r "LFDNoise1" [a'] 1
+instance Make LFDNoise1 where
+  ugen = mkLFDNoise1
diff --git a/Sound/SC3/UGen/Record/LFDNoise3.hs b/Sound/SC3/UGen/Record/LFDNoise3.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LFDNoise3.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.LFDNoise3 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LFDNoise3 = LFDNoise3 {
+  rate :: S.Rate,
+  freq :: S.UGen
+  } deriving (Show)
+lFDNoise3 :: LFDNoise3
+lFDNoise3 = LFDNoise3 {
+  rate = S.AR,
+  freq = 500.0
+  }
+mkLFDNoise3 :: LFDNoise3 -> S.UGen
+mkLFDNoise3 (LFDNoise3 r a') = S.mkOsc r "LFDNoise3" [a'] 1
+instance Make LFDNoise3 where
+  ugen = mkLFDNoise3
diff --git a/Sound/SC3/UGen/Record/LFNoise0.hs b/Sound/SC3/UGen/Record/LFNoise0.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LFNoise0.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.LFNoise0 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LFNoise0 = LFNoise0 {
+  rate :: S.Rate,
+  freq :: S.UGen
+  } deriving (Show)
+lFNoise0 :: LFNoise0
+lFNoise0 = LFNoise0 {
+  rate = S.AR,
+  freq = 500.0
+  }
+mkLFNoise0 :: LFNoise0 -> S.UGen
+mkLFNoise0 (LFNoise0 r a') = S.mkOsc r "LFNoise0" [a'] 1
+instance Make LFNoise0 where
+  ugen = mkLFNoise0
diff --git a/Sound/SC3/UGen/Record/LFNoise1.hs b/Sound/SC3/UGen/Record/LFNoise1.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LFNoise1.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.LFNoise1 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LFNoise1 = LFNoise1 {
+  rate :: S.Rate,
+  freq :: S.UGen
+  } deriving (Show)
+lFNoise1 :: LFNoise1
+lFNoise1 = LFNoise1 {
+  rate = S.AR,
+  freq = 500.0
+  }
+mkLFNoise1 :: LFNoise1 -> S.UGen
+mkLFNoise1 (LFNoise1 r a') = S.mkOsc r "LFNoise1" [a'] 1
+instance Make LFNoise1 where
+  ugen = mkLFNoise1
diff --git a/Sound/SC3/UGen/Record/LFNoise2.hs b/Sound/SC3/UGen/Record/LFNoise2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LFNoise2.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.LFNoise2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LFNoise2 = LFNoise2 {
+  rate :: S.Rate,
+  freq :: S.UGen
+  } deriving (Show)
+lFNoise2 :: LFNoise2
+lFNoise2 = LFNoise2 {
+  rate = S.AR,
+  freq = 500.0
+  }
+mkLFNoise2 :: LFNoise2 -> S.UGen
+mkLFNoise2 (LFNoise2 r a') = S.mkOsc r "LFNoise2" [a'] 1
+instance Make LFNoise2 where
+  ugen = mkLFNoise2
diff --git a/Sound/SC3/UGen/Record/LFPar.hs b/Sound/SC3/UGen/Record/LFPar.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LFPar.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.LFPar where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LFPar = LFPar {
+  rate :: S.Rate,
+  freq :: S.UGen,
+  iphase :: S.UGen
+  } deriving (Show)
+lFPar :: LFPar
+lFPar = LFPar {
+  rate = S.AR,
+  freq = 440.0,
+  iphase = 0.0
+  }
+mkLFPar :: LFPar -> S.UGen
+mkLFPar (LFPar r a' b') = S.mkOsc r "LFPar" [a',b'] 1
+instance Make LFPar where
+  ugen = mkLFPar
diff --git a/Sound/SC3/UGen/Record/LFPulse.hs b/Sound/SC3/UGen/Record/LFPulse.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LFPulse.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.LFPulse where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LFPulse = LFPulse {
+  rate :: S.Rate,
+  freq :: S.UGen,
+  iphase :: S.UGen,
+  width :: S.UGen
+  } deriving (Show)
+lFPulse :: LFPulse
+lFPulse = LFPulse {
+  rate = S.AR,
+  freq = 440.0,
+  iphase = 0.0,
+  width = 0.5
+  }
+mkLFPulse :: LFPulse -> S.UGen
+mkLFPulse (LFPulse r a' b' c') = S.mkOsc r "LFPulse" [a',b',c'] 1
+instance Make LFPulse where
+  ugen = mkLFPulse
diff --git a/Sound/SC3/UGen/Record/LFSaw.hs b/Sound/SC3/UGen/Record/LFSaw.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LFSaw.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.LFSaw where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LFSaw = LFSaw {
+  rate :: S.Rate,
+  freq :: S.UGen,
+  iphase :: S.UGen
+  } deriving (Show)
+lFSaw :: LFSaw
+lFSaw = LFSaw {
+  rate = S.AR,
+  freq = 440.0,
+  iphase = 0.0
+  }
+mkLFSaw :: LFSaw -> S.UGen
+mkLFSaw (LFSaw r a' b') = S.mkOsc r "LFSaw" [a',b'] 1
+instance Make LFSaw where
+  ugen = mkLFSaw
diff --git a/Sound/SC3/UGen/Record/LFTri.hs b/Sound/SC3/UGen/Record/LFTri.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LFTri.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.LFTri where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LFTri = LFTri {
+  rate :: S.Rate,
+  freq :: S.UGen,
+  iphase :: S.UGen
+  } deriving (Show)
+lFTri :: LFTri
+lFTri = LFTri {
+  rate = S.AR,
+  freq = 440.0,
+  iphase = 0.0
+  }
+mkLFTri :: LFTri -> S.UGen
+mkLFTri (LFTri r a' b') = S.mkOsc r "LFTri" [a',b'] 1
+instance Make LFTri where
+  ugen = mkLFTri
diff --git a/Sound/SC3/UGen/Record/LPF.hs b/Sound/SC3/UGen/Record/LPF.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LPF.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.LPF where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LPF = LPF {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen
+  } deriving (Show)
+lPF :: LPF
+lPF = LPF {
+  rate = S.AR,
+  input = 0.0,
+  freq = 440.0
+  }
+mkLPF :: LPF -> S.UGen
+mkLPF (LPF r a' b') = S.mkOsc r "LPF" [a',b'] 1
+instance Make LPF where
+  ugen = mkLPF
diff --git a/Sound/SC3/UGen/Record/LPZ1.hs b/Sound/SC3/UGen/Record/LPZ1.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LPZ1.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.LPZ1 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LPZ1 = LPZ1 {
+  rate :: S.Rate,
+  input :: S.UGen
+  } deriving (Show)
+lPZ1 :: LPZ1
+lPZ1 = LPZ1 {
+  rate = S.AR,
+  input = 0.0
+  }
+mkLPZ1 :: LPZ1 -> S.UGen
+mkLPZ1 (LPZ1 r a') = S.mkOsc r "LPZ1" [a'] 1
+instance Make LPZ1 where
+  ugen = mkLPZ1
diff --git a/Sound/SC3/UGen/Record/LPZ2.hs b/Sound/SC3/UGen/Record/LPZ2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LPZ2.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.LPZ2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LPZ2 = LPZ2 {
+  rate :: S.Rate,
+  input :: S.UGen
+  } deriving (Show)
+lPZ2 :: LPZ2
+lPZ2 = LPZ2 {
+  rate = S.AR,
+  input = 0.0
+  }
+mkLPZ2 :: LPZ2 -> S.UGen
+mkLPZ2 (LPZ2 r a') = S.mkOsc r "LPZ2" [a'] 1
+instance Make LPZ2 where
+  ugen = mkLPZ2
diff --git a/Sound/SC3/UGen/Record/Lag.hs b/Sound/SC3/UGen/Record/Lag.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Lag.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Lag where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Lag = Lag {
+  rate :: S.Rate,
+  input :: S.UGen,
+  lagTime :: S.UGen
+  } deriving (Show)
+lag :: Lag
+lag = Lag {
+  rate = S.AR,
+  input = 0.0,
+  lagTime = 0.1
+  }
+mkLag :: Lag -> S.UGen
+mkLag (Lag r a' b') = S.mkOsc r "Lag" [a',b'] 1
+instance Make Lag where
+  ugen = mkLag
diff --git a/Sound/SC3/UGen/Record/Lag2.hs b/Sound/SC3/UGen/Record/Lag2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Lag2.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Lag2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Lag2 = Lag2 {
+  rate :: S.Rate,
+  input :: S.UGen,
+  lagTime :: S.UGen
+  } deriving (Show)
+lag2 :: Lag2
+lag2 = Lag2 {
+  rate = S.AR,
+  input = 0.0,
+  lagTime = 0.1
+  }
+mkLag2 :: Lag2 -> S.UGen
+mkLag2 (Lag2 r a' b') = S.mkOsc r "Lag2" [a',b'] 1
+instance Make Lag2 where
+  ugen = mkLag2
diff --git a/Sound/SC3/UGen/Record/Lag2UD.hs b/Sound/SC3/UGen/Record/Lag2UD.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Lag2UD.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Lag2UD where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Lag2UD = Lag2UD {
+  rate :: S.Rate,
+  input :: S.UGen,
+  lagTimeU :: S.UGen,
+  lagTimeD :: S.UGen
+  } deriving (Show)
+lag2UD :: Lag2UD
+lag2UD = Lag2UD {
+  rate = S.AR,
+  input = 0.0,
+  lagTimeU = 0.1,
+  lagTimeD = 0.1
+  }
+mkLag2UD :: Lag2UD -> S.UGen
+mkLag2UD (Lag2UD r a' b' c') = S.mkOsc r "Lag2UD" [a',b',c'] 1
+instance Make Lag2UD where
+  ugen = mkLag2UD
diff --git a/Sound/SC3/UGen/Record/Lag3.hs b/Sound/SC3/UGen/Record/Lag3.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Lag3.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Lag3 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Lag3 = Lag3 {
+  rate :: S.Rate,
+  input :: S.UGen,
+  lagTime :: S.UGen
+  } deriving (Show)
+lag3 :: Lag3
+lag3 = Lag3 {
+  rate = S.AR,
+  input = 0.0,
+  lagTime = 0.1
+  }
+mkLag3 :: Lag3 -> S.UGen
+mkLag3 (Lag3 r a' b') = S.mkOsc r "Lag3" [a',b'] 1
+instance Make Lag3 where
+  ugen = mkLag3
diff --git a/Sound/SC3/UGen/Record/Lag3UD.hs b/Sound/SC3/UGen/Record/Lag3UD.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Lag3UD.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Lag3UD where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Lag3UD = Lag3UD {
+  rate :: S.Rate,
+  input :: S.UGen,
+  lagTimeU :: S.UGen,
+  lagTimeD :: S.UGen
+  } deriving (Show)
+lag3UD :: Lag3UD
+lag3UD = Lag3UD {
+  rate = S.AR,
+  input = 0.0,
+  lagTimeU = 0.1,
+  lagTimeD = 0.1
+  }
+mkLag3UD :: Lag3UD -> S.UGen
+mkLag3UD (Lag3UD r a' b' c') = S.mkOsc r "Lag3UD" [a',b',c'] 1
+instance Make Lag3UD where
+  ugen = mkLag3UD
diff --git a/Sound/SC3/UGen/Record/LagControl.hs b/Sound/SC3/UGen/Record/LagControl.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LagControl.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.LagControl where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LagControl = LagControl {
+  rate :: S.Rate,
+  values :: S.UGen,
+  lags :: S.UGen
+  } deriving (Show)
+lagControl :: LagControl
+lagControl = LagControl {
+  rate = S.AR,
+  values = 0.0,
+  lags = 0.0
+  }
+mkLagControl :: LagControl -> S.UGen
+mkLagControl (LagControl r a' b') = S.mkOsc r "LagControl" [a',b'] 1
+instance Make LagControl where
+  ugen = mkLagControl
diff --git a/Sound/SC3/UGen/Record/LagIn.hs b/Sound/SC3/UGen/Record/LagIn.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LagIn.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.LagIn where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LagIn = LagIn {
+  bus :: S.UGen,
+  numChannels :: S.UGen,
+  lag :: S.UGen
+  } deriving (Show)
+lagIn :: LagIn
+lagIn = LagIn {
+  bus = 0.0,
+  numChannels = 1.0,
+  lag = 0.1
+  }
+mkLagIn :: LagIn -> S.UGen
+mkLagIn (LagIn  a' b' c') = S.mkOsc S.KR "LagIn" [a',b',c'] 1
+instance Make LagIn where
+  ugen = mkLagIn
diff --git a/Sound/SC3/UGen/Record/LagUD.hs b/Sound/SC3/UGen/Record/LagUD.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LagUD.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.LagUD where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LagUD = LagUD {
+  rate :: S.Rate,
+  input :: S.UGen,
+  lagTimeU :: S.UGen,
+  lagTimeD :: S.UGen
+  } deriving (Show)
+lagUD :: LagUD
+lagUD = LagUD {
+  rate = S.AR,
+  input = 0.0,
+  lagTimeU = 0.1,
+  lagTimeD = 0.1
+  }
+mkLagUD :: LagUD -> S.UGen
+mkLagUD (LagUD r a' b' c') = S.mkOsc r "LagUD" [a',b',c'] 1
+instance Make LagUD where
+  ugen = mkLagUD
diff --git a/Sound/SC3/UGen/Record/LastValue.hs b/Sound/SC3/UGen/Record/LastValue.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LastValue.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.LastValue where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LastValue = LastValue {
+  rate :: S.Rate,
+  input :: S.UGen,
+  diff :: S.UGen
+  } deriving (Show)
+lastValue :: LastValue
+lastValue = LastValue {
+  rate = S.AR,
+  input = 0.0,
+  diff = 0.01
+  }
+mkLastValue :: LastValue -> S.UGen
+mkLastValue (LastValue r a' b') = S.mkOsc r "LastValue" [a',b'] 1
+instance Make LastValue where
+  ugen = mkLastValue
diff --git a/Sound/SC3/UGen/Record/Latch.hs b/Sound/SC3/UGen/Record/Latch.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Latch.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Latch where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Latch = Latch {
+  rate :: S.Rate,
+  input :: S.UGen,
+  trig :: S.UGen
+  } deriving (Show)
+latch :: Latch
+latch = Latch {
+  rate = S.AR,
+  input = 0.0,
+  trig = 0.0
+  }
+mkLatch :: Latch -> S.UGen
+mkLatch (Latch r a' b') = S.mkOsc r "Latch" [a',b'] 1
+instance Make Latch where
+  ugen = mkLatch
diff --git a/Sound/SC3/UGen/Record/LatoocarfianC.hs b/Sound/SC3/UGen/Record/LatoocarfianC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LatoocarfianC.hs
@@ -0,0 +1,26 @@
+module Sound.SC3.UGen.Record.LatoocarfianC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LatoocarfianC = LatoocarfianC {
+  freq :: S.UGen,
+  a :: S.UGen,
+  b :: S.UGen,
+  c :: S.UGen,
+  d :: S.UGen,
+  xi :: S.UGen,
+  yi :: S.UGen
+  } deriving (Show)
+latoocarfianC :: LatoocarfianC
+latoocarfianC = LatoocarfianC {
+  freq = 22050.0,
+  a = 1.0,
+  b = 3.0,
+  c = 0.5,
+  d = 0.5,
+  xi = 0.5,
+  yi = 0.5
+  }
+mkLatoocarfianC :: LatoocarfianC -> S.UGen
+mkLatoocarfianC (LatoocarfianC  a' b' c' d' e' f' g') = S.mkOsc S.AR "LatoocarfianC" [a',b',c',d',e',f',g'] 1
+instance Make LatoocarfianC where
+  ugen = mkLatoocarfianC
diff --git a/Sound/SC3/UGen/Record/LatoocarfianL.hs b/Sound/SC3/UGen/Record/LatoocarfianL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LatoocarfianL.hs
@@ -0,0 +1,26 @@
+module Sound.SC3.UGen.Record.LatoocarfianL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LatoocarfianL = LatoocarfianL {
+  freq :: S.UGen,
+  a :: S.UGen,
+  b :: S.UGen,
+  c :: S.UGen,
+  d :: S.UGen,
+  xi :: S.UGen,
+  yi :: S.UGen
+  } deriving (Show)
+latoocarfianL :: LatoocarfianL
+latoocarfianL = LatoocarfianL {
+  freq = 22050.0,
+  a = 1.0,
+  b = 3.0,
+  c = 0.5,
+  d = 0.5,
+  xi = 0.5,
+  yi = 0.5
+  }
+mkLatoocarfianL :: LatoocarfianL -> S.UGen
+mkLatoocarfianL (LatoocarfianL  a' b' c' d' e' f' g') = S.mkOsc S.AR "LatoocarfianL" [a',b',c',d',e',f',g'] 1
+instance Make LatoocarfianL where
+  ugen = mkLatoocarfianL
diff --git a/Sound/SC3/UGen/Record/LatoocarfianN.hs b/Sound/SC3/UGen/Record/LatoocarfianN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LatoocarfianN.hs
@@ -0,0 +1,26 @@
+module Sound.SC3.UGen.Record.LatoocarfianN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LatoocarfianN = LatoocarfianN {
+  freq :: S.UGen,
+  a :: S.UGen,
+  b :: S.UGen,
+  c :: S.UGen,
+  d :: S.UGen,
+  xi :: S.UGen,
+  yi :: S.UGen
+  } deriving (Show)
+latoocarfianN :: LatoocarfianN
+latoocarfianN = LatoocarfianN {
+  freq = 22050.0,
+  a = 1.0,
+  b = 3.0,
+  c = 0.5,
+  d = 0.5,
+  xi = 0.5,
+  yi = 0.5
+  }
+mkLatoocarfianN :: LatoocarfianN -> S.UGen
+mkLatoocarfianN (LatoocarfianN  a' b' c' d' e' f' g') = S.mkOsc S.AR "LatoocarfianN" [a',b',c',d',e',f',g'] 1
+instance Make LatoocarfianN where
+  ugen = mkLatoocarfianN
diff --git a/Sound/SC3/UGen/Record/LeakDC.hs b/Sound/SC3/UGen/Record/LeakDC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LeakDC.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.LeakDC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LeakDC = LeakDC {
+  rate :: S.Rate,
+  input :: S.UGen,
+  coef :: S.UGen
+  } deriving (Show)
+leakDC :: LeakDC
+leakDC = LeakDC {
+  rate = S.AR,
+  input = 0.0,
+  coef = 0.995
+  }
+mkLeakDC :: LeakDC -> S.UGen
+mkLeakDC (LeakDC r a' b') = S.mkOsc r "LeakDC" [a',b'] 1
+instance Make LeakDC where
+  ugen = mkLeakDC
diff --git a/Sound/SC3/UGen/Record/LeastChange.hs b/Sound/SC3/UGen/Record/LeastChange.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LeastChange.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.LeastChange where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LeastChange = LeastChange {
+  rate :: S.Rate,
+  a :: S.UGen,
+  b :: S.UGen
+  } deriving (Show)
+leastChange :: LeastChange
+leastChange = LeastChange {
+  rate = S.AR,
+  a = 0.0,
+  b = 0.0
+  }
+mkLeastChange :: LeastChange -> S.UGen
+mkLeastChange (LeastChange r a' b') = S.mkOsc r "LeastChange" [a',b'] 1
+instance Make LeastChange where
+  ugen = mkLeastChange
diff --git a/Sound/SC3/UGen/Record/Limiter.hs b/Sound/SC3/UGen/Record/Limiter.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Limiter.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Limiter where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Limiter = Limiter {
+  input :: S.UGen,
+  level :: S.UGen,
+  dur :: S.UGen
+  } deriving (Show)
+limiter :: Limiter
+limiter = Limiter {
+  input = 0.0,
+  level = 1.0,
+  dur = 0.01
+  }
+mkLimiter :: Limiter -> S.UGen
+mkLimiter (Limiter  a' b' c') = S.mkOsc S.AR "Limiter" [a',b',c'] 1
+instance Make Limiter where
+  ugen = mkLimiter
diff --git a/Sound/SC3/UGen/Record/LinCongC.hs b/Sound/SC3/UGen/Record/LinCongC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LinCongC.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.LinCongC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LinCongC = LinCongC {
+  freq :: S.UGen,
+  a :: S.UGen,
+  c :: S.UGen,
+  m :: S.UGen,
+  xi :: S.UGen
+  } deriving (Show)
+linCongC :: LinCongC
+linCongC = LinCongC {
+  freq = 22050.0,
+  a = 1.1,
+  c = 0.13,
+  m = 1.0,
+  xi = 0.0
+  }
+mkLinCongC :: LinCongC -> S.UGen
+mkLinCongC (LinCongC  a' b' c' d' e') = S.mkOsc S.AR "LinCongC" [a',b',c',d',e'] 1
+instance Make LinCongC where
+  ugen = mkLinCongC
diff --git a/Sound/SC3/UGen/Record/LinCongL.hs b/Sound/SC3/UGen/Record/LinCongL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LinCongL.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.LinCongL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LinCongL = LinCongL {
+  freq :: S.UGen,
+  a :: S.UGen,
+  c :: S.UGen,
+  m :: S.UGen,
+  xi :: S.UGen
+  } deriving (Show)
+linCongL :: LinCongL
+linCongL = LinCongL {
+  freq = 22050.0,
+  a = 1.1,
+  c = 0.13,
+  m = 1.0,
+  xi = 0.0
+  }
+mkLinCongL :: LinCongL -> S.UGen
+mkLinCongL (LinCongL  a' b' c' d' e') = S.mkOsc S.AR "LinCongL" [a',b',c',d',e'] 1
+instance Make LinCongL where
+  ugen = mkLinCongL
diff --git a/Sound/SC3/UGen/Record/LinCongN.hs b/Sound/SC3/UGen/Record/LinCongN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LinCongN.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.LinCongN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LinCongN = LinCongN {
+  freq :: S.UGen,
+  a :: S.UGen,
+  c :: S.UGen,
+  m :: S.UGen,
+  xi :: S.UGen
+  } deriving (Show)
+linCongN :: LinCongN
+linCongN = LinCongN {
+  freq = 22050.0,
+  a = 1.1,
+  c = 0.13,
+  m = 1.0,
+  xi = 0.0
+  }
+mkLinCongN :: LinCongN -> S.UGen
+mkLinCongN (LinCongN  a' b' c' d' e') = S.mkOsc S.AR "LinCongN" [a',b',c',d',e'] 1
+instance Make LinCongN where
+  ugen = mkLinCongN
diff --git a/Sound/SC3/UGen/Record/LinExp.hs b/Sound/SC3/UGen/Record/LinExp.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LinExp.hs
@@ -0,0 +1,24 @@
+module Sound.SC3.UGen.Record.LinExp where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LinExp = LinExp {
+  rate :: S.Rate,
+  input :: S.UGen,
+  srclo :: S.UGen,
+  srchi :: S.UGen,
+  dstlo :: S.UGen,
+  dsthi :: S.UGen
+  } deriving (Show)
+linExp :: LinExp
+linExp = LinExp {
+  rate = S.AR,
+  input = 0.0,
+  srclo = 0.0,
+  srchi = 1.0,
+  dstlo = 1.0,
+  dsthi = 2.0
+  }
+mkLinExp :: LinExp -> S.UGen
+mkLinExp (LinExp r a' b' c' d' e') = S.mkOsc r "LinExp" [a',b',c',d',e'] 1
+instance Make LinExp where
+  ugen = mkLinExp
diff --git a/Sound/SC3/UGen/Record/LinLin.hs b/Sound/SC3/UGen/Record/LinLin.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LinLin.hs
@@ -0,0 +1,24 @@
+module Sound.SC3.UGen.Record.LinLin where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LinLin = LinLin {
+  rate :: S.Rate,
+  input :: S.UGen,
+  srclo :: S.UGen,
+  srchi :: S.UGen,
+  dstlo :: S.UGen,
+  dsthi :: S.UGen
+  } deriving (Show)
+linLin :: LinLin
+linLin = LinLin {
+  rate = S.AR,
+  input = 0.0,
+  srclo = 0.0,
+  srchi = 1.0,
+  dstlo = 1.0,
+  dsthi = 2.0
+  }
+mkLinLin :: LinLin -> S.UGen
+mkLinLin (LinLin r a' b' c' d' e') = S.mkOsc r "LinLin" [a',b',c',d',e'] 1
+instance Make LinLin where
+  ugen = mkLinLin
diff --git a/Sound/SC3/UGen/Record/LinPan2.hs b/Sound/SC3/UGen/Record/LinPan2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LinPan2.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.LinPan2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LinPan2 = LinPan2 {
+  rate :: S.Rate,
+  input :: S.UGen,
+  pos :: S.UGen,
+  level :: S.UGen
+  } deriving (Show)
+linPan2 :: LinPan2
+linPan2 = LinPan2 {
+  rate = S.AR,
+  input = 0.0,
+  pos = 0.0,
+  level = 1.0
+  }
+mkLinPan2 :: LinPan2 -> S.UGen
+mkLinPan2 (LinPan2 r a' b' c') = S.mkOsc r "LinPan2" [a',b',c'] 2
+instance Make LinPan2 where
+  ugen = mkLinPan2
diff --git a/Sound/SC3/UGen/Record/LinRand.hs b/Sound/SC3/UGen/Record/LinRand.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LinRand.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.LinRand where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LinRand = LinRand {
+  lo :: S.UGen,
+  hi :: S.UGen,
+  minmax :: S.UGen
+  } deriving (Show)
+linRand :: LinRand
+linRand = LinRand {
+  lo = 0.0,
+  hi = 1.0,
+  minmax = 0.0
+  }
+mkLinRand :: LinRand -> S.UGen
+mkLinRand (LinRand  a' b' c') = S.mkOsc S.IR "LinRand" [a',b',c'] 1
+instance Make LinRand where
+  ugen = mkLinRand
diff --git a/Sound/SC3/UGen/Record/LinXFade2.hs b/Sound/SC3/UGen/Record/LinXFade2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LinXFade2.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.LinXFade2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LinXFade2 = LinXFade2 {
+  rate :: S.Rate,
+  inA :: S.UGen,
+  inB :: S.UGen,
+  pan :: S.UGen,
+  level :: S.UGen
+  } deriving (Show)
+linXFade2 :: LinXFade2
+linXFade2 = LinXFade2 {
+  rate = S.AR,
+  inA = 0.0,
+  inB = 0.0,
+  pan = 0.0,
+  level = 1.0
+  }
+mkLinXFade2 :: LinXFade2 -> S.UGen
+mkLinXFade2 (LinXFade2 r a' b' c' d') = S.mkOsc r "LinXFade2" [a',b',c',d'] 1
+instance Make LinXFade2 where
+  ugen = mkLinXFade2
diff --git a/Sound/SC3/UGen/Record/Line.hs b/Sound/SC3/UGen/Record/Line.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Line.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.Line where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Line = Line {
+  rate :: S.Rate,
+  start :: S.UGen,
+  end :: S.UGen,
+  dur :: S.UGen,
+  doneAction :: S.UGen
+  } deriving (Show)
+line :: Line
+line = Line {
+  rate = S.AR,
+  start = 0.0,
+  end = 1.0,
+  dur = 1.0,
+  doneAction = 0.0
+  }
+mkLine :: Line -> S.UGen
+mkLine (Line r a' b' c' d') = S.mkOsc r "Line" [a',b',c',d'] 1
+instance Make Line where
+  ugen = mkLine
diff --git a/Sound/SC3/UGen/Record/Linen.hs b/Sound/SC3/UGen/Record/Linen.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Linen.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.Linen where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Linen = Linen {
+  gate :: S.UGen,
+  attackTime :: S.UGen,
+  susLevel :: S.UGen,
+  releaseTime :: S.UGen,
+  doneAction :: S.UGen
+  } deriving (Show)
+linen :: Linen
+linen = Linen {
+  gate = 1.0,
+  attackTime = 0.01,
+  susLevel = 1.0,
+  releaseTime = 1.0,
+  doneAction = 0.0
+  }
+mkLinen :: Linen -> S.UGen
+mkLinen (Linen  a' b' c' d' e') = S.mkOsc S.KR "Linen" [a',b',c',d',e'] 1
+instance Make Linen where
+  ugen = mkLinen
diff --git a/Sound/SC3/UGen/Record/ListDUGen.hs b/Sound/SC3/UGen/Record/ListDUGen.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/ListDUGen.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.ListDUGen where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data ListDUGen = ListDUGen {
+  list :: S.UGen,
+  repeats :: S.UGen
+  } deriving (Show)
+listDUGen :: ListDUGen
+listDUGen = ListDUGen {
+  list = 0.0,
+  repeats = 1.0
+  }
+mkListDUGen :: ListDUGen -> S.UGen
+mkListDUGen (ListDUGen  a' b') = S.mkOsc S.DR "ListDUGen" [a',b'] 1
+instance Make ListDUGen where
+  ugen = mkListDUGen
diff --git a/Sound/SC3/UGen/Record/LocalBuf.hs b/Sound/SC3/UGen/Record/LocalBuf.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LocalBuf.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.LocalBuf where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LocalBuf = LocalBuf {
+  numFrames :: S.UGen,
+  numChannels :: S.UGen,
+  maxLocalBufs :: S.UGen
+  } deriving (Show)
+localBuf :: LocalBuf
+localBuf = LocalBuf {
+  numFrames = 1.0,
+  numChannels = 1.0,
+  maxLocalBufs = 8.0
+  }
+mkLocalBuf :: LocalBuf -> S.UGen
+mkLocalBuf (LocalBuf  a' b' c') = S.mkOsc S.IR "LocalBuf" [a',b',c'] 1
+instance Make LocalBuf where
+  ugen = mkLocalBuf
diff --git a/Sound/SC3/UGen/Record/LocalIn.hs b/Sound/SC3/UGen/Record/LocalIn.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LocalIn.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.LocalIn where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LocalIn = LocalIn {
+  rate :: S.Rate,
+  numChannels :: S.UGen
+  } deriving (Show)
+localIn :: LocalIn
+localIn = LocalIn {
+  rate = S.AR,
+  numChannels = 1.0
+  }
+mkLocalIn :: LocalIn -> S.UGen
+mkLocalIn (LocalIn r a') = S.mkOsc r "LocalIn" [a'] 1
+instance Make LocalIn where
+  ugen = mkLocalIn
diff --git a/Sound/SC3/UGen/Record/LocalOut.hs b/Sound/SC3/UGen/Record/LocalOut.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LocalOut.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.LocalOut where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LocalOut = LocalOut {
+  rate :: S.Rate,
+  input :: S.UGen
+  } deriving (Show)
+localOut :: LocalOut
+localOut = LocalOut {
+  rate = S.AR,
+  input = 0.0
+  }
+mkLocalOut :: LocalOut -> S.UGen
+mkLocalOut (LocalOut r a') = S.mkOsc r "LocalOut" [a'] 1
+instance Make LocalOut where
+  ugen = mkLocalOut
diff --git a/Sound/SC3/UGen/Record/Logistic.hs b/Sound/SC3/UGen/Record/Logistic.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Logistic.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Logistic where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Logistic = Logistic {
+  rate :: S.Rate,
+  chaosParam :: S.UGen,
+  freq :: S.UGen,
+  init_ :: S.UGen
+  } deriving (Show)
+logistic :: Logistic
+logistic = Logistic {
+  rate = S.AR,
+  chaosParam = 3.0,
+  freq = 1000.0,
+  init_ = 0.5
+  }
+mkLogistic :: Logistic -> S.UGen
+mkLogistic (Logistic r a' b' c') = S.mkOsc r "Logistic" [a',b',c'] 1
+instance Make Logistic where
+  ugen = mkLogistic
diff --git a/Sound/SC3/UGen/Record/LorenzL.hs b/Sound/SC3/UGen/Record/LorenzL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/LorenzL.hs
@@ -0,0 +1,28 @@
+module Sound.SC3.UGen.Record.LorenzL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data LorenzL = LorenzL {
+  freq :: S.UGen,
+  s :: S.UGen,
+  r :: S.UGen,
+  b :: S.UGen,
+  h :: S.UGen,
+  xi :: S.UGen,
+  yi :: S.UGen,
+  zi :: S.UGen
+  } deriving (Show)
+lorenzL :: LorenzL
+lorenzL = LorenzL {
+  freq = 22050.0,
+  s = 10.0,
+  r = 28.0,
+  b = 2.667,
+  h = 0.05,
+  xi = 0.1,
+  yi = 0.0,
+  zi = 0.0
+  }
+mkLorenzL :: LorenzL -> S.UGen
+mkLorenzL (LorenzL  a' b' c' d' e' f' g' h') = S.mkOsc S.AR "LorenzL" [a',b',c',d',e',f',g',h'] 1
+instance Make LorenzL where
+  ugen = mkLorenzL
diff --git a/Sound/SC3/UGen/Record/Loudness.hs b/Sound/SC3/UGen/Record/Loudness.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Loudness.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Loudness where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Loudness = Loudness {
+  chain :: S.UGen,
+  smask :: S.UGen,
+  tmask :: S.UGen
+  } deriving (Show)
+loudness :: Loudness
+loudness = Loudness {
+  chain = 0.0,
+  smask = 0.25,
+  tmask = 1.0
+  }
+mkLoudness :: Loudness -> S.UGen
+mkLoudness (Loudness  a' b' c') = S.mkOsc S.KR "Loudness" [a',b',c'] 1
+instance Make Loudness where
+  ugen = mkLoudness
diff --git a/Sound/SC3/UGen/Record/MFCC.hs b/Sound/SC3/UGen/Record/MFCC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/MFCC.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.MFCC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data MFCC = MFCC {
+  chain :: S.UGen,
+  numcoeff :: S.UGen
+  } deriving (Show)
+mFCC :: MFCC
+mFCC = MFCC {
+  chain = 0.0,
+  numcoeff = 13.0
+  }
+mkMFCC :: MFCC -> S.UGen
+mkMFCC (MFCC  a' b') = S.mkOsc S.KR "MFCC" [a',b'] 1
+instance Make MFCC where
+  ugen = mkMFCC
diff --git a/Sound/SC3/UGen/Record/MantissaMask.hs b/Sound/SC3/UGen/Record/MantissaMask.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/MantissaMask.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.MantissaMask where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data MantissaMask = MantissaMask {
+  rate :: S.Rate,
+  input :: S.UGen,
+  bits :: S.UGen
+  } deriving (Show)
+mantissaMask :: MantissaMask
+mantissaMask = MantissaMask {
+  rate = S.AR,
+  input = 0.0,
+  bits = 3.0
+  }
+mkMantissaMask :: MantissaMask -> S.UGen
+mkMantissaMask (MantissaMask r a' b') = S.mkOsc r "MantissaMask" [a',b'] 1
+instance Make MantissaMask where
+  ugen = mkMantissaMask
diff --git a/Sound/SC3/UGen/Record/Median.hs b/Sound/SC3/UGen/Record/Median.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Median.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Median where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Median = Median {
+  rate :: S.Rate,
+  length_ :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+median :: Median
+median = Median {
+  rate = S.AR,
+  length_ = 3.0,
+  input = 0.0
+  }
+mkMedian :: Median -> S.UGen
+mkMedian (Median r a' b') = S.mkOsc r "Median" [a',b'] 1
+instance Make Median where
+  ugen = mkMedian
diff --git a/Sound/SC3/UGen/Record/MidEQ.hs b/Sound/SC3/UGen/Record/MidEQ.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/MidEQ.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.MidEQ where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data MidEQ = MidEQ {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen,
+  rq :: S.UGen,
+  db :: S.UGen
+  } deriving (Show)
+midEQ :: MidEQ
+midEQ = MidEQ {
+  rate = S.AR,
+  input = 0.0,
+  freq = 440.0,
+  rq = 1.0,
+  db = 0.0
+  }
+mkMidEQ :: MidEQ -> S.UGen
+mkMidEQ (MidEQ r a' b' c' d') = S.mkOsc r "MidEQ" [a',b',c',d'] 1
+instance Make MidEQ where
+  ugen = mkMidEQ
diff --git a/Sound/SC3/UGen/Record/MoogFF.hs b/Sound/SC3/UGen/Record/MoogFF.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/MoogFF.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.MoogFF where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data MoogFF = MoogFF {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen,
+  gain :: S.UGen,
+  reset :: S.UGen
+  } deriving (Show)
+moogFF :: MoogFF
+moogFF = MoogFF {
+  rate = S.AR,
+  input = 0.0,
+  freq = 100.0,
+  gain = 2.0,
+  reset = 0.0
+  }
+mkMoogFF :: MoogFF -> S.UGen
+mkMoogFF (MoogFF r a' b' c' d') = S.mkOsc r "MoogFF" [a',b',c',d'] 1
+instance Make MoogFF where
+  ugen = mkMoogFF
diff --git a/Sound/SC3/UGen/Record/MostChange.hs b/Sound/SC3/UGen/Record/MostChange.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/MostChange.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.MostChange where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data MostChange = MostChange {
+  rate :: S.Rate,
+  a :: S.UGen,
+  b :: S.UGen
+  } deriving (Show)
+mostChange :: MostChange
+mostChange = MostChange {
+  rate = S.AR,
+  a = 0.0,
+  b = 0.0
+  }
+mkMostChange :: MostChange -> S.UGen
+mkMostChange (MostChange r a' b') = S.mkOsc r "MostChange" [a',b'] 1
+instance Make MostChange where
+  ugen = mkMostChange
diff --git a/Sound/SC3/UGen/Record/MouseButton.hs b/Sound/SC3/UGen/Record/MouseButton.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/MouseButton.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.MouseButton where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data MouseButton = MouseButton {
+  minval :: S.UGen,
+  maxval :: S.UGen,
+  lag :: S.UGen
+  } deriving (Show)
+mouseButton :: MouseButton
+mouseButton = MouseButton {
+  minval = 0.0,
+  maxval = 1.0,
+  lag = 0.2
+  }
+mkMouseButton :: MouseButton -> S.UGen
+mkMouseButton (MouseButton  a' b' c') = S.mkOsc S.KR "MouseButton" [a',b',c'] 1
+instance Make MouseButton where
+  ugen = mkMouseButton
diff --git a/Sound/SC3/UGen/Record/MouseX.hs b/Sound/SC3/UGen/Record/MouseX.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/MouseX.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.MouseX where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data MouseX = MouseX {
+  minval :: S.UGen,
+  maxval :: S.UGen,
+  warp :: S.UGen,
+  lag :: S.UGen
+  } deriving (Show)
+mouseX :: MouseX
+mouseX = MouseX {
+  minval = 0.0,
+  maxval = 1.0,
+  warp = 0.0,
+  lag = 0.2
+  }
+mkMouseX :: MouseX -> S.UGen
+mkMouseX (MouseX  a' b' c' d') = S.mkOsc S.KR "MouseX" [a',b',c',d'] 1
+instance Make MouseX where
+  ugen = mkMouseX
diff --git a/Sound/SC3/UGen/Record/MouseY.hs b/Sound/SC3/UGen/Record/MouseY.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/MouseY.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.MouseY where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data MouseY = MouseY {
+  minval :: S.UGen,
+  maxval :: S.UGen,
+  warp :: S.UGen,
+  lag :: S.UGen
+  } deriving (Show)
+mouseY :: MouseY
+mouseY = MouseY {
+  minval = 0.0,
+  maxval = 1.0,
+  warp = 0.0,
+  lag = 0.2
+  }
+mkMouseY :: MouseY -> S.UGen
+mkMouseY (MouseY  a' b' c' d') = S.mkOsc S.KR "MouseY" [a',b',c',d'] 1
+instance Make MouseY where
+  ugen = mkMouseY
diff --git a/Sound/SC3/UGen/Record/MultiOutUGen.hs b/Sound/SC3/UGen/Record/MultiOutUGen.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/MultiOutUGen.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.MultiOutUGen where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data MultiOutUGen = MultiOutUGen {
+  maxSize :: S.UGen
+  } deriving (Show)
+multiOutUGen :: MultiOutUGen
+multiOutUGen = MultiOutUGen {
+  maxSize = 0.0
+  }
+mkMultiOutUGen :: MultiOutUGen -> S.UGen
+mkMultiOutUGen (MultiOutUGen  a') = S.mkOsc S.AR "MultiOutUGen" [a'] 1
+instance Make MultiOutUGen where
+  ugen = mkMultiOutUGen
diff --git a/Sound/SC3/UGen/Record/NRand.hs b/Sound/SC3/UGen/Record/NRand.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/NRand.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.NRand where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data NRand = NRand {
+  lo :: S.UGen,
+  hi :: S.UGen,
+  n :: S.UGen
+  } deriving (Show)
+nRand :: NRand
+nRand = NRand {
+  lo = 0.0,
+  hi = 1.0,
+  n = 0.0
+  }
+mkNRand :: NRand -> S.UGen
+mkNRand (NRand  a' b' c') = S.mkOsc S.IR "NRand" [a',b',c'] 1
+instance Make NRand where
+  ugen = mkNRand
diff --git a/Sound/SC3/UGen/Record/Normalizer.hs b/Sound/SC3/UGen/Record/Normalizer.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Normalizer.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Normalizer where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Normalizer = Normalizer {
+  input :: S.UGen,
+  level :: S.UGen,
+  dur :: S.UGen
+  } deriving (Show)
+normalizer :: Normalizer
+normalizer = Normalizer {
+  input = 0.0,
+  level = 1.0,
+  dur = 0.01
+  }
+mkNormalizer :: Normalizer -> S.UGen
+mkNormalizer (Normalizer  a' b' c') = S.mkOsc S.AR "Normalizer" [a',b',c'] 1
+instance Make Normalizer where
+  ugen = mkNormalizer
diff --git a/Sound/SC3/UGen/Record/OffsetOut.hs b/Sound/SC3/UGen/Record/OffsetOut.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/OffsetOut.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.OffsetOut where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data OffsetOut = OffsetOut {
+  rate :: S.Rate,
+  bus :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+offsetOut :: OffsetOut
+offsetOut = OffsetOut {
+  rate = S.AR,
+  bus = 0.0,
+  input = 0.0
+  }
+mkOffsetOut :: OffsetOut -> S.UGen
+mkOffsetOut (OffsetOut r a' b') = S.mkOsc r "OffsetOut" [a',b'] 1
+instance Make OffsetOut where
+  ugen = mkOffsetOut
diff --git a/Sound/SC3/UGen/Record/OnePole.hs b/Sound/SC3/UGen/Record/OnePole.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/OnePole.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.OnePole where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data OnePole = OnePole {
+  rate :: S.Rate,
+  input :: S.UGen,
+  coef :: S.UGen
+  } deriving (Show)
+onePole :: OnePole
+onePole = OnePole {
+  rate = S.AR,
+  input = 0.0,
+  coef = 0.5
+  }
+mkOnePole :: OnePole -> S.UGen
+mkOnePole (OnePole r a' b') = S.mkOsc r "OnePole" [a',b'] 1
+instance Make OnePole where
+  ugen = mkOnePole
diff --git a/Sound/SC3/UGen/Record/OneZero.hs b/Sound/SC3/UGen/Record/OneZero.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/OneZero.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.OneZero where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data OneZero = OneZero {
+  rate :: S.Rate,
+  input :: S.UGen,
+  coef :: S.UGen
+  } deriving (Show)
+oneZero :: OneZero
+oneZero = OneZero {
+  rate = S.AR,
+  input = 0.0,
+  coef = 0.5
+  }
+mkOneZero :: OneZero -> S.UGen
+mkOneZero (OneZero r a' b') = S.mkOsc r "OneZero" [a',b'] 1
+instance Make OneZero where
+  ugen = mkOneZero
diff --git a/Sound/SC3/UGen/Record/Onsets.hs b/Sound/SC3/UGen/Record/Onsets.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Onsets.hs
@@ -0,0 +1,30 @@
+module Sound.SC3.UGen.Record.Onsets where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Onsets = Onsets {
+  chain :: S.UGen,
+  threshold :: S.UGen,
+  odftype :: S.UGen,
+  relaxtime :: S.UGen,
+  floor_ :: S.UGen,
+  mingap :: S.UGen,
+  medianspan :: S.UGen,
+  whtype :: S.UGen,
+  rawodf :: S.UGen
+  } deriving (Show)
+onsets :: Onsets
+onsets = Onsets {
+  chain = 0.0,
+  threshold = 0.5,
+  odftype = 3.0,
+  relaxtime = 1.0,
+  floor_ = 0.1,
+  mingap = 10.0,
+  medianspan = 11.0,
+  whtype = 1.0,
+  rawodf = 0.0
+  }
+mkOnsets :: Onsets -> S.UGen
+mkOnsets (Onsets  a' b' c' d' e' f' g' h' i') = S.mkOsc S.KR "Onsets" [a',b',c',d',e',f',g',h',i'] 1
+instance Make Onsets where
+  ugen = mkOnsets
diff --git a/Sound/SC3/UGen/Record/Osc.hs b/Sound/SC3/UGen/Record/Osc.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Osc.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Osc where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Osc = Osc {
+  rate :: S.Rate,
+  bufnum :: S.UGen,
+  freq :: S.UGen,
+  phase :: S.UGen
+  } deriving (Show)
+osc :: Osc
+osc = Osc {
+  rate = S.AR,
+  bufnum = 0.0,
+  freq = 440.0,
+  phase = 0.0
+  }
+mkOsc :: Osc -> S.UGen
+mkOsc (Osc r a' b' c') = S.mkOsc r "Osc" [a',b',c'] 1
+instance Make Osc where
+  ugen = mkOsc
diff --git a/Sound/SC3/UGen/Record/OscN.hs b/Sound/SC3/UGen/Record/OscN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/OscN.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.OscN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data OscN = OscN {
+  rate :: S.Rate,
+  bufnum :: S.UGen,
+  freq :: S.UGen,
+  phase :: S.UGen
+  } deriving (Show)
+oscN :: OscN
+oscN = OscN {
+  rate = S.AR,
+  bufnum = 0.0,
+  freq = 440.0,
+  phase = 0.0
+  }
+mkOscN :: OscN -> S.UGen
+mkOscN (OscN r a' b' c') = S.mkOsc r "OscN" [a',b',c'] 1
+instance Make OscN where
+  ugen = mkOscN
diff --git a/Sound/SC3/UGen/Record/Out.hs b/Sound/SC3/UGen/Record/Out.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Out.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Out where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Out = Out {
+  rate :: S.Rate,
+  bus :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+out :: Out
+out = Out {
+  rate = S.AR,
+  bus = 0.0,
+  input = 0.0
+  }
+mkOut :: Out -> S.UGen
+mkOut (Out r a' b') = S.mkOsc r "Out" [a',b'] 1
+instance Make Out where
+  ugen = mkOut
diff --git a/Sound/SC3/UGen/Record/PSinGrain.hs b/Sound/SC3/UGen/Record/PSinGrain.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PSinGrain.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.PSinGrain where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PSinGrain = PSinGrain {
+  freq :: S.UGen,
+  dur :: S.UGen,
+  amp :: S.UGen
+  } deriving (Show)
+pSinGrain :: PSinGrain
+pSinGrain = PSinGrain {
+  freq = 440.0,
+  dur = 0.2,
+  amp = 1.0
+  }
+mkPSinGrain :: PSinGrain -> S.UGen
+mkPSinGrain (PSinGrain  a' b' c') = S.mkOsc S.AR "PSinGrain" [a',b',c'] 1
+instance Make PSinGrain where
+  ugen = mkPSinGrain
diff --git a/Sound/SC3/UGen/Record/PV_Add.hs b/Sound/SC3/UGen/Record/PV_Add.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_Add.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_Add where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_Add = PV_Add {
+  bufferA :: S.UGen,
+  bufferB :: S.UGen
+  } deriving (Show)
+pV_Add :: PV_Add
+pV_Add = PV_Add {
+  bufferA = 0.0,
+  bufferB = 0.0
+  }
+mkPV_Add :: PV_Add -> S.UGen
+mkPV_Add (PV_Add  a' b') = S.mkOsc S.KR "PV_Add" [a',b'] 1
+instance Make PV_Add where
+  ugen = mkPV_Add
diff --git a/Sound/SC3/UGen/Record/PV_BinScramble.hs b/Sound/SC3/UGen/Record/PV_BinScramble.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_BinScramble.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.PV_BinScramble where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_BinScramble = PV_BinScramble {
+  buffer :: S.UGen,
+  wipe :: S.UGen,
+  width :: S.UGen,
+  trig :: S.UGen
+  } deriving (Show)
+pV_BinScramble :: PV_BinScramble
+pV_BinScramble = PV_BinScramble {
+  buffer = 0.0,
+  wipe = 0.0,
+  width = 0.2,
+  trig = 0.0
+  }
+mkPV_BinScramble :: PV_BinScramble -> S.UGen
+mkPV_BinScramble (PV_BinScramble  a' b' c' d') = S.mkOsc S.KR "PV_BinScramble" [a',b',c',d'] 1
+instance Make PV_BinScramble where
+  ugen = mkPV_BinScramble
diff --git a/Sound/SC3/UGen/Record/PV_BinShift.hs b/Sound/SC3/UGen/Record/PV_BinShift.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_BinShift.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.PV_BinShift where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_BinShift = PV_BinShift {
+  buffer :: S.UGen,
+  stretch :: S.UGen,
+  shift :: S.UGen
+  } deriving (Show)
+pV_BinShift :: PV_BinShift
+pV_BinShift = PV_BinShift {
+  buffer = 0.0,
+  stretch = 1.0,
+  shift = 0.0
+  }
+mkPV_BinShift :: PV_BinShift -> S.UGen
+mkPV_BinShift (PV_BinShift  a' b' c') = S.mkOsc S.KR "PV_BinShift" [a',b',c'] 1
+instance Make PV_BinShift where
+  ugen = mkPV_BinShift
diff --git a/Sound/SC3/UGen/Record/PV_BinWipe.hs b/Sound/SC3/UGen/Record/PV_BinWipe.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_BinWipe.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.PV_BinWipe where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_BinWipe = PV_BinWipe {
+  bufferA :: S.UGen,
+  bufferB :: S.UGen,
+  wipe :: S.UGen
+  } deriving (Show)
+pV_BinWipe :: PV_BinWipe
+pV_BinWipe = PV_BinWipe {
+  bufferA = 0.0,
+  bufferB = 0.0,
+  wipe = 0.0
+  }
+mkPV_BinWipe :: PV_BinWipe -> S.UGen
+mkPV_BinWipe (PV_BinWipe  a' b' c') = S.mkOsc S.KR "PV_BinWipe" [a',b',c'] 1
+instance Make PV_BinWipe where
+  ugen = mkPV_BinWipe
diff --git a/Sound/SC3/UGen/Record/PV_BrickWall.hs b/Sound/SC3/UGen/Record/PV_BrickWall.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_BrickWall.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_BrickWall where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_BrickWall = PV_BrickWall {
+  buffer :: S.UGen,
+  wipe :: S.UGen
+  } deriving (Show)
+pV_BrickWall :: PV_BrickWall
+pV_BrickWall = PV_BrickWall {
+  buffer = 0.0,
+  wipe = 0.0
+  }
+mkPV_BrickWall :: PV_BrickWall -> S.UGen
+mkPV_BrickWall (PV_BrickWall  a' b') = S.mkOsc S.KR "PV_BrickWall" [a',b'] 1
+instance Make PV_BrickWall where
+  ugen = mkPV_BrickWall
diff --git a/Sound/SC3/UGen/Record/PV_ChainUGen.hs b/Sound/SC3/UGen/Record/PV_ChainUGen.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_ChainUGen.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.PV_ChainUGen where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_ChainUGen = PV_ChainUGen {
+  maxSize :: S.UGen
+  } deriving (Show)
+pV_ChainUGen :: PV_ChainUGen
+pV_ChainUGen = PV_ChainUGen {
+  maxSize = 0.0
+  }
+mkPV_ChainUGen :: PV_ChainUGen -> S.UGen
+mkPV_ChainUGen (PV_ChainUGen  a') = S.mkOsc S.AR "PV_ChainUGen" [a'] 1
+instance Make PV_ChainUGen where
+  ugen = mkPV_ChainUGen
diff --git a/Sound/SC3/UGen/Record/PV_ConformalMap.hs b/Sound/SC3/UGen/Record/PV_ConformalMap.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_ConformalMap.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.PV_ConformalMap where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_ConformalMap = PV_ConformalMap {
+  buffer :: S.UGen,
+  areal :: S.UGen,
+  aimag :: S.UGen
+  } deriving (Show)
+pV_ConformalMap :: PV_ConformalMap
+pV_ConformalMap = PV_ConformalMap {
+  buffer = 0.0,
+  areal = 0.0,
+  aimag = 0.0
+  }
+mkPV_ConformalMap :: PV_ConformalMap -> S.UGen
+mkPV_ConformalMap (PV_ConformalMap  a' b' c') = S.mkOsc S.KR "PV_ConformalMap" [a',b',c'] 1
+instance Make PV_ConformalMap where
+  ugen = mkPV_ConformalMap
diff --git a/Sound/SC3/UGen/Record/PV_Copy.hs b/Sound/SC3/UGen/Record/PV_Copy.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_Copy.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_Copy where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_Copy = PV_Copy {
+  bufferA :: S.UGen,
+  bufferB :: S.UGen
+  } deriving (Show)
+pV_Copy :: PV_Copy
+pV_Copy = PV_Copy {
+  bufferA = 0.0,
+  bufferB = 0.0
+  }
+mkPV_Copy :: PV_Copy -> S.UGen
+mkPV_Copy (PV_Copy  a' b') = S.mkOsc S.KR "PV_Copy" [a',b'] 1
+instance Make PV_Copy where
+  ugen = mkPV_Copy
diff --git a/Sound/SC3/UGen/Record/PV_CopyPhase.hs b/Sound/SC3/UGen/Record/PV_CopyPhase.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_CopyPhase.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_CopyPhase where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_CopyPhase = PV_CopyPhase {
+  bufferA :: S.UGen,
+  bufferB :: S.UGen
+  } deriving (Show)
+pV_CopyPhase :: PV_CopyPhase
+pV_CopyPhase = PV_CopyPhase {
+  bufferA = 0.0,
+  bufferB = 0.0
+  }
+mkPV_CopyPhase :: PV_CopyPhase -> S.UGen
+mkPV_CopyPhase (PV_CopyPhase  a' b') = S.mkOsc S.KR "PV_CopyPhase" [a',b'] 1
+instance Make PV_CopyPhase where
+  ugen = mkPV_CopyPhase
diff --git a/Sound/SC3/UGen/Record/PV_Diffuser.hs b/Sound/SC3/UGen/Record/PV_Diffuser.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_Diffuser.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_Diffuser where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_Diffuser = PV_Diffuser {
+  buffer :: S.UGen,
+  trig :: S.UGen
+  } deriving (Show)
+pV_Diffuser :: PV_Diffuser
+pV_Diffuser = PV_Diffuser {
+  buffer = 0.0,
+  trig = 0.0
+  }
+mkPV_Diffuser :: PV_Diffuser -> S.UGen
+mkPV_Diffuser (PV_Diffuser  a' b') = S.mkOsc S.KR "PV_Diffuser" [a',b'] 1
+instance Make PV_Diffuser where
+  ugen = mkPV_Diffuser
diff --git a/Sound/SC3/UGen/Record/PV_HainsworthFoote.hs b/Sound/SC3/UGen/Record/PV_HainsworthFoote.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_HainsworthFoote.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.PV_HainsworthFoote where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_HainsworthFoote = PV_HainsworthFoote {
+  buffer :: S.UGen,
+  proph :: S.UGen,
+  propf :: S.UGen,
+  threshold :: S.UGen,
+  waittime :: S.UGen
+  } deriving (Show)
+pV_HainsworthFoote :: PV_HainsworthFoote
+pV_HainsworthFoote = PV_HainsworthFoote {
+  buffer = 0.0,
+  proph = 0.0,
+  propf = 0.0,
+  threshold = 1.0,
+  waittime = 0.04
+  }
+mkPV_HainsworthFoote :: PV_HainsworthFoote -> S.UGen
+mkPV_HainsworthFoote (PV_HainsworthFoote  a' b' c' d' e') = S.mkOsc S.AR "PV_HainsworthFoote" [a',b',c',d',e'] 1
+instance Make PV_HainsworthFoote where
+  ugen = mkPV_HainsworthFoote
diff --git a/Sound/SC3/UGen/Record/PV_JensenAndersen.hs b/Sound/SC3/UGen/Record/PV_JensenAndersen.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_JensenAndersen.hs
@@ -0,0 +1,26 @@
+module Sound.SC3.UGen.Record.PV_JensenAndersen where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_JensenAndersen = PV_JensenAndersen {
+  buffer :: S.UGen,
+  propsc :: S.UGen,
+  prophfe :: S.UGen,
+  prophfc :: S.UGen,
+  propsf :: S.UGen,
+  threshold :: S.UGen,
+  waittime :: S.UGen
+  } deriving (Show)
+pV_JensenAndersen :: PV_JensenAndersen
+pV_JensenAndersen = PV_JensenAndersen {
+  buffer = 0.0,
+  propsc = 0.25,
+  prophfe = 0.25,
+  prophfc = 0.25,
+  propsf = 0.25,
+  threshold = 1.0,
+  waittime = 0.04
+  }
+mkPV_JensenAndersen :: PV_JensenAndersen -> S.UGen
+mkPV_JensenAndersen (PV_JensenAndersen  a' b' c' d' e' f' g') = S.mkOsc S.AR "PV_JensenAndersen" [a',b',c',d',e',f',g'] 1
+instance Make PV_JensenAndersen where
+  ugen = mkPV_JensenAndersen
diff --git a/Sound/SC3/UGen/Record/PV_LocalMax.hs b/Sound/SC3/UGen/Record/PV_LocalMax.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_LocalMax.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_LocalMax where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_LocalMax = PV_LocalMax {
+  buffer :: S.UGen,
+  threshold :: S.UGen
+  } deriving (Show)
+pV_LocalMax :: PV_LocalMax
+pV_LocalMax = PV_LocalMax {
+  buffer = 0.0,
+  threshold = 0.0
+  }
+mkPV_LocalMax :: PV_LocalMax -> S.UGen
+mkPV_LocalMax (PV_LocalMax  a' b') = S.mkOsc S.KR "PV_LocalMax" [a',b'] 1
+instance Make PV_LocalMax where
+  ugen = mkPV_LocalMax
diff --git a/Sound/SC3/UGen/Record/PV_MagAbove.hs b/Sound/SC3/UGen/Record/PV_MagAbove.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_MagAbove.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_MagAbove where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_MagAbove = PV_MagAbove {
+  buffer :: S.UGen,
+  threshold :: S.UGen
+  } deriving (Show)
+pV_MagAbove :: PV_MagAbove
+pV_MagAbove = PV_MagAbove {
+  buffer = 0.0,
+  threshold = 0.0
+  }
+mkPV_MagAbove :: PV_MagAbove -> S.UGen
+mkPV_MagAbove (PV_MagAbove  a' b') = S.mkOsc S.KR "PV_MagAbove" [a',b'] 1
+instance Make PV_MagAbove where
+  ugen = mkPV_MagAbove
diff --git a/Sound/SC3/UGen/Record/PV_MagBelow.hs b/Sound/SC3/UGen/Record/PV_MagBelow.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_MagBelow.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_MagBelow where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_MagBelow = PV_MagBelow {
+  buffer :: S.UGen,
+  threshold :: S.UGen
+  } deriving (Show)
+pV_MagBelow :: PV_MagBelow
+pV_MagBelow = PV_MagBelow {
+  buffer = 0.0,
+  threshold = 0.0
+  }
+mkPV_MagBelow :: PV_MagBelow -> S.UGen
+mkPV_MagBelow (PV_MagBelow  a' b') = S.mkOsc S.KR "PV_MagBelow" [a',b'] 1
+instance Make PV_MagBelow where
+  ugen = mkPV_MagBelow
diff --git a/Sound/SC3/UGen/Record/PV_MagClip.hs b/Sound/SC3/UGen/Record/PV_MagClip.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_MagClip.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_MagClip where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_MagClip = PV_MagClip {
+  buffer :: S.UGen,
+  threshold :: S.UGen
+  } deriving (Show)
+pV_MagClip :: PV_MagClip
+pV_MagClip = PV_MagClip {
+  buffer = 0.0,
+  threshold = 0.0
+  }
+mkPV_MagClip :: PV_MagClip -> S.UGen
+mkPV_MagClip (PV_MagClip  a' b') = S.mkOsc S.KR "PV_MagClip" [a',b'] 1
+instance Make PV_MagClip where
+  ugen = mkPV_MagClip
diff --git a/Sound/SC3/UGen/Record/PV_MagDiv.hs b/Sound/SC3/UGen/Record/PV_MagDiv.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_MagDiv.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.PV_MagDiv where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_MagDiv = PV_MagDiv {
+  bufferA :: S.UGen,
+  bufferB :: S.UGen,
+  zeroed :: S.UGen
+  } deriving (Show)
+pV_MagDiv :: PV_MagDiv
+pV_MagDiv = PV_MagDiv {
+  bufferA = 0.0,
+  bufferB = 0.0,
+  zeroed = 0.0001
+  }
+mkPV_MagDiv :: PV_MagDiv -> S.UGen
+mkPV_MagDiv (PV_MagDiv  a' b' c') = S.mkOsc S.KR "PV_MagDiv" [a',b',c'] 1
+instance Make PV_MagDiv where
+  ugen = mkPV_MagDiv
diff --git a/Sound/SC3/UGen/Record/PV_MagFreeze.hs b/Sound/SC3/UGen/Record/PV_MagFreeze.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_MagFreeze.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_MagFreeze where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_MagFreeze = PV_MagFreeze {
+  buffer :: S.UGen,
+  freeze :: S.UGen
+  } deriving (Show)
+pV_MagFreeze :: PV_MagFreeze
+pV_MagFreeze = PV_MagFreeze {
+  buffer = 0.0,
+  freeze = 0.0
+  }
+mkPV_MagFreeze :: PV_MagFreeze -> S.UGen
+mkPV_MagFreeze (PV_MagFreeze  a' b') = S.mkOsc S.KR "PV_MagFreeze" [a',b'] 1
+instance Make PV_MagFreeze where
+  ugen = mkPV_MagFreeze
diff --git a/Sound/SC3/UGen/Record/PV_MagMul.hs b/Sound/SC3/UGen/Record/PV_MagMul.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_MagMul.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_MagMul where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_MagMul = PV_MagMul {
+  bufferA :: S.UGen,
+  bufferB :: S.UGen
+  } deriving (Show)
+pV_MagMul :: PV_MagMul
+pV_MagMul = PV_MagMul {
+  bufferA = 0.0,
+  bufferB = 0.0
+  }
+mkPV_MagMul :: PV_MagMul -> S.UGen
+mkPV_MagMul (PV_MagMul  a' b') = S.mkOsc S.KR "PV_MagMul" [a',b'] 1
+instance Make PV_MagMul where
+  ugen = mkPV_MagMul
diff --git a/Sound/SC3/UGen/Record/PV_MagNoise.hs b/Sound/SC3/UGen/Record/PV_MagNoise.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_MagNoise.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.PV_MagNoise where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_MagNoise = PV_MagNoise {
+  buffer :: S.UGen
+  } deriving (Show)
+pV_MagNoise :: PV_MagNoise
+pV_MagNoise = PV_MagNoise {
+  buffer = 0.0
+  }
+mkPV_MagNoise :: PV_MagNoise -> S.UGen
+mkPV_MagNoise (PV_MagNoise  a') = S.mkOsc S.KR "PV_MagNoise" [a'] 1
+instance Make PV_MagNoise where
+  ugen = mkPV_MagNoise
diff --git a/Sound/SC3/UGen/Record/PV_MagShift.hs b/Sound/SC3/UGen/Record/PV_MagShift.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_MagShift.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.PV_MagShift where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_MagShift = PV_MagShift {
+  buffer :: S.UGen,
+  stretch :: S.UGen,
+  shift :: S.UGen
+  } deriving (Show)
+pV_MagShift :: PV_MagShift
+pV_MagShift = PV_MagShift {
+  buffer = 0.0,
+  stretch = 1.0,
+  shift = 0.0
+  }
+mkPV_MagShift :: PV_MagShift -> S.UGen
+mkPV_MagShift (PV_MagShift  a' b' c') = S.mkOsc S.KR "PV_MagShift" [a',b',c'] 1
+instance Make PV_MagShift where
+  ugen = mkPV_MagShift
diff --git a/Sound/SC3/UGen/Record/PV_MagSmear.hs b/Sound/SC3/UGen/Record/PV_MagSmear.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_MagSmear.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_MagSmear where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_MagSmear = PV_MagSmear {
+  buffer :: S.UGen,
+  bins :: S.UGen
+  } deriving (Show)
+pV_MagSmear :: PV_MagSmear
+pV_MagSmear = PV_MagSmear {
+  buffer = 0.0,
+  bins = 0.0
+  }
+mkPV_MagSmear :: PV_MagSmear -> S.UGen
+mkPV_MagSmear (PV_MagSmear  a' b') = S.mkOsc S.KR "PV_MagSmear" [a',b'] 1
+instance Make PV_MagSmear where
+  ugen = mkPV_MagSmear
diff --git a/Sound/SC3/UGen/Record/PV_MagSquared.hs b/Sound/SC3/UGen/Record/PV_MagSquared.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_MagSquared.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.PV_MagSquared where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_MagSquared = PV_MagSquared {
+  buffer :: S.UGen
+  } deriving (Show)
+pV_MagSquared :: PV_MagSquared
+pV_MagSquared = PV_MagSquared {
+  buffer = 0.0
+  }
+mkPV_MagSquared :: PV_MagSquared -> S.UGen
+mkPV_MagSquared (PV_MagSquared  a') = S.mkOsc S.KR "PV_MagSquared" [a'] 1
+instance Make PV_MagSquared where
+  ugen = mkPV_MagSquared
diff --git a/Sound/SC3/UGen/Record/PV_Max.hs b/Sound/SC3/UGen/Record/PV_Max.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_Max.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_Max where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_Max = PV_Max {
+  bufferA :: S.UGen,
+  bufferB :: S.UGen
+  } deriving (Show)
+pV_Max :: PV_Max
+pV_Max = PV_Max {
+  bufferA = 0.0,
+  bufferB = 0.0
+  }
+mkPV_Max :: PV_Max -> S.UGen
+mkPV_Max (PV_Max  a' b') = S.mkOsc S.KR "PV_Max" [a',b'] 1
+instance Make PV_Max where
+  ugen = mkPV_Max
diff --git a/Sound/SC3/UGen/Record/PV_Min.hs b/Sound/SC3/UGen/Record/PV_Min.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_Min.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_Min where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_Min = PV_Min {
+  bufferA :: S.UGen,
+  bufferB :: S.UGen
+  } deriving (Show)
+pV_Min :: PV_Min
+pV_Min = PV_Min {
+  bufferA = 0.0,
+  bufferB = 0.0
+  }
+mkPV_Min :: PV_Min -> S.UGen
+mkPV_Min (PV_Min  a' b') = S.mkOsc S.KR "PV_Min" [a',b'] 1
+instance Make PV_Min where
+  ugen = mkPV_Min
diff --git a/Sound/SC3/UGen/Record/PV_Mul.hs b/Sound/SC3/UGen/Record/PV_Mul.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_Mul.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_Mul where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_Mul = PV_Mul {
+  bufferA :: S.UGen,
+  bufferB :: S.UGen
+  } deriving (Show)
+pV_Mul :: PV_Mul
+pV_Mul = PV_Mul {
+  bufferA = 0.0,
+  bufferB = 0.0
+  }
+mkPV_Mul :: PV_Mul -> S.UGen
+mkPV_Mul (PV_Mul  a' b') = S.mkOsc S.KR "PV_Mul" [a',b'] 1
+instance Make PV_Mul where
+  ugen = mkPV_Mul
diff --git a/Sound/SC3/UGen/Record/PV_PhaseShift.hs b/Sound/SC3/UGen/Record/PV_PhaseShift.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_PhaseShift.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.PV_PhaseShift where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_PhaseShift = PV_PhaseShift {
+  buffer :: S.UGen,
+  shift :: S.UGen
+  } deriving (Show)
+pV_PhaseShift :: PV_PhaseShift
+pV_PhaseShift = PV_PhaseShift {
+  buffer = 0.0,
+  shift = 0.0
+  }
+mkPV_PhaseShift :: PV_PhaseShift -> S.UGen
+mkPV_PhaseShift (PV_PhaseShift  a' b') = S.mkOsc S.KR "PV_PhaseShift" [a',b'] 1
+instance Make PV_PhaseShift where
+  ugen = mkPV_PhaseShift
diff --git a/Sound/SC3/UGen/Record/PV_PhaseShift270.hs b/Sound/SC3/UGen/Record/PV_PhaseShift270.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_PhaseShift270.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.PV_PhaseShift270 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_PhaseShift270 = PV_PhaseShift270 {
+  buffer :: S.UGen
+  } deriving (Show)
+pV_PhaseShift270 :: PV_PhaseShift270
+pV_PhaseShift270 = PV_PhaseShift270 {
+  buffer = 0.0
+  }
+mkPV_PhaseShift270 :: PV_PhaseShift270 -> S.UGen
+mkPV_PhaseShift270 (PV_PhaseShift270  a') = S.mkOsc S.KR "PV_PhaseShift270" [a'] 1
+instance Make PV_PhaseShift270 where
+  ugen = mkPV_PhaseShift270
diff --git a/Sound/SC3/UGen/Record/PV_PhaseShift90.hs b/Sound/SC3/UGen/Record/PV_PhaseShift90.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_PhaseShift90.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.PV_PhaseShift90 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_PhaseShift90 = PV_PhaseShift90 {
+  buffer :: S.UGen
+  } deriving (Show)
+pV_PhaseShift90 :: PV_PhaseShift90
+pV_PhaseShift90 = PV_PhaseShift90 {
+  buffer = 0.0
+  }
+mkPV_PhaseShift90 :: PV_PhaseShift90 -> S.UGen
+mkPV_PhaseShift90 (PV_PhaseShift90  a') = S.mkOsc S.KR "PV_PhaseShift90" [a'] 1
+instance Make PV_PhaseShift90 where
+  ugen = mkPV_PhaseShift90
diff --git a/Sound/SC3/UGen/Record/PV_RandComb.hs b/Sound/SC3/UGen/Record/PV_RandComb.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_RandComb.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.PV_RandComb where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_RandComb = PV_RandComb {
+  buffer :: S.UGen,
+  wipe :: S.UGen,
+  trig :: S.UGen
+  } deriving (Show)
+pV_RandComb :: PV_RandComb
+pV_RandComb = PV_RandComb {
+  buffer = 0.0,
+  wipe = 0.0,
+  trig = 0.0
+  }
+mkPV_RandComb :: PV_RandComb -> S.UGen
+mkPV_RandComb (PV_RandComb  a' b' c') = S.mkOsc S.KR "PV_RandComb" [a',b',c'] 1
+instance Make PV_RandComb where
+  ugen = mkPV_RandComb
diff --git a/Sound/SC3/UGen/Record/PV_RandWipe.hs b/Sound/SC3/UGen/Record/PV_RandWipe.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_RandWipe.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.PV_RandWipe where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_RandWipe = PV_RandWipe {
+  bufferA :: S.UGen,
+  bufferB :: S.UGen,
+  wipe :: S.UGen,
+  trig :: S.UGen
+  } deriving (Show)
+pV_RandWipe :: PV_RandWipe
+pV_RandWipe = PV_RandWipe {
+  bufferA = 0.0,
+  bufferB = 0.0,
+  wipe = 0.0,
+  trig = 0.0
+  }
+mkPV_RandWipe :: PV_RandWipe -> S.UGen
+mkPV_RandWipe (PV_RandWipe  a' b' c' d') = S.mkOsc S.KR "PV_RandWipe" [a',b',c',d'] 1
+instance Make PV_RandWipe where
+  ugen = mkPV_RandWipe
diff --git a/Sound/SC3/UGen/Record/PV_RectComb.hs b/Sound/SC3/UGen/Record/PV_RectComb.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_RectComb.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.PV_RectComb where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_RectComb = PV_RectComb {
+  buffer :: S.UGen,
+  numTeeth :: S.UGen,
+  phase :: S.UGen,
+  width :: S.UGen
+  } deriving (Show)
+pV_RectComb :: PV_RectComb
+pV_RectComb = PV_RectComb {
+  buffer = 0.0,
+  numTeeth = 0.0,
+  phase = 0.0,
+  width = 0.5
+  }
+mkPV_RectComb :: PV_RectComb -> S.UGen
+mkPV_RectComb (PV_RectComb  a' b' c' d') = S.mkOsc S.KR "PV_RectComb" [a',b',c',d'] 1
+instance Make PV_RectComb where
+  ugen = mkPV_RectComb
diff --git a/Sound/SC3/UGen/Record/PV_RectComb2.hs b/Sound/SC3/UGen/Record/PV_RectComb2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PV_RectComb2.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.PV_RectComb2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PV_RectComb2 = PV_RectComb2 {
+  bufferA :: S.UGen,
+  bufferB :: S.UGen,
+  numTeeth :: S.UGen,
+  phase :: S.UGen,
+  width :: S.UGen
+  } deriving (Show)
+pV_RectComb2 :: PV_RectComb2
+pV_RectComb2 = PV_RectComb2 {
+  bufferA = 0.0,
+  bufferB = 0.0,
+  numTeeth = 0.0,
+  phase = 0.0,
+  width = 0.5
+  }
+mkPV_RectComb2 :: PV_RectComb2 -> S.UGen
+mkPV_RectComb2 (PV_RectComb2  a' b' c' d' e') = S.mkOsc S.KR "PV_RectComb2" [a',b',c',d',e'] 1
+instance Make PV_RectComb2 where
+  ugen = mkPV_RectComb2
diff --git a/Sound/SC3/UGen/Record/Pan2.hs b/Sound/SC3/UGen/Record/Pan2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Pan2.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Pan2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Pan2 = Pan2 {
+  rate :: S.Rate,
+  input :: S.UGen,
+  pos :: S.UGen,
+  level :: S.UGen
+  } deriving (Show)
+pan2 :: Pan2
+pan2 = Pan2 {
+  rate = S.AR,
+  input = 0.0,
+  pos = 0.0,
+  level = 1.0
+  }
+mkPan2 :: Pan2 -> S.UGen
+mkPan2 (Pan2 r a' b' c') = S.mkOsc r "Pan2" [a',b',c'] 2
+instance Make Pan2 where
+  ugen = mkPan2
diff --git a/Sound/SC3/UGen/Record/Pan4.hs b/Sound/SC3/UGen/Record/Pan4.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Pan4.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.Pan4 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Pan4 = Pan4 {
+  rate :: S.Rate,
+  input :: S.UGen,
+  xpos :: S.UGen,
+  ypos :: S.UGen,
+  level :: S.UGen
+  } deriving (Show)
+pan4 :: Pan4
+pan4 = Pan4 {
+  rate = S.AR,
+  input = 0.0,
+  xpos = 0.0,
+  ypos = 0.0,
+  level = 1.0
+  }
+mkPan4 :: Pan4 -> S.UGen
+mkPan4 (Pan4 r a' b' c' d') = S.mkOsc r "Pan4" [a',b',c',d'] 4
+instance Make Pan4 where
+  ugen = mkPan4
diff --git a/Sound/SC3/UGen/Record/PanAz.hs b/Sound/SC3/UGen/Record/PanAz.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PanAz.hs
@@ -0,0 +1,26 @@
+module Sound.SC3.UGen.Record.PanAz where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PanAz = PanAz {
+  rate :: S.Rate,
+  numChans :: S.UGen,
+  input :: S.UGen,
+  pos :: S.UGen,
+  level :: S.UGen,
+  width :: S.UGen,
+  orientation :: S.UGen
+  } deriving (Show)
+panAz :: PanAz
+panAz = PanAz {
+  rate = S.AR,
+  numChans = 0.0,
+  input = 0.0,
+  pos = 0.0,
+  level = 1.0,
+  width = 2.0,
+  orientation = 0.5
+  }
+mkPanAz :: PanAz -> S.UGen
+mkPanAz (PanAz r a' b' c' d' e' f') = S.mkOsc r "PanAz" [a',b',c',d',e',f'] 1
+instance Make PanAz where
+  ugen = mkPanAz
diff --git a/Sound/SC3/UGen/Record/PanB.hs b/Sound/SC3/UGen/Record/PanB.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PanB.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.PanB where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PanB = PanB {
+  rate :: S.Rate,
+  input :: S.UGen,
+  azimuth :: S.UGen,
+  elevation :: S.UGen,
+  gain :: S.UGen
+  } deriving (Show)
+panB :: PanB
+panB = PanB {
+  rate = S.AR,
+  input = 0.0,
+  azimuth = 0.0,
+  elevation = 0.0,
+  gain = 1.0
+  }
+mkPanB :: PanB -> S.UGen
+mkPanB (PanB r a' b' c' d') = S.mkOsc r "PanB" [a',b',c',d'] 4
+instance Make PanB where
+  ugen = mkPanB
diff --git a/Sound/SC3/UGen/Record/PanB2.hs b/Sound/SC3/UGen/Record/PanB2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PanB2.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.PanB2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PanB2 = PanB2 {
+  rate :: S.Rate,
+  input :: S.UGen,
+  azimuth :: S.UGen,
+  gain :: S.UGen
+  } deriving (Show)
+panB2 :: PanB2
+panB2 = PanB2 {
+  rate = S.AR,
+  input = 0.0,
+  azimuth = 0.0,
+  gain = 1.0
+  }
+mkPanB2 :: PanB2 -> S.UGen
+mkPanB2 (PanB2 r a' b' c') = S.mkOsc r "PanB2" [a',b',c'] 3
+instance Make PanB2 where
+  ugen = mkPanB2
diff --git a/Sound/SC3/UGen/Record/Panner.hs b/Sound/SC3/UGen/Record/Panner.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Panner.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.Panner where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Panner = Panner {
+  maxSize :: S.UGen
+  } deriving (Show)
+panner :: Panner
+panner = Panner {
+  maxSize = 0.0
+  }
+mkPanner :: Panner -> S.UGen
+mkPanner (Panner  a') = S.mkOsc S.AR "Panner" [a'] 1
+instance Make Panner where
+  ugen = mkPanner
diff --git a/Sound/SC3/UGen/Record/PartConv.hs b/Sound/SC3/UGen/Record/PartConv.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PartConv.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.PartConv where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PartConv = PartConv {
+  input :: S.UGen,
+  fftsize :: S.UGen,
+  irbufnum :: S.UGen
+  } deriving (Show)
+partConv :: PartConv
+partConv = PartConv {
+  input = 0.0,
+  fftsize = 0.0,
+  irbufnum = 0.0
+  }
+mkPartConv :: PartConv -> S.UGen
+mkPartConv (PartConv  a' b' c') = S.mkOsc S.AR "PartConv" [a',b',c'] 1
+instance Make PartConv where
+  ugen = mkPartConv
diff --git a/Sound/SC3/UGen/Record/Pause.hs b/Sound/SC3/UGen/Record/Pause.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Pause.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Pause where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Pause = Pause {
+  gate :: S.UGen,
+  id_ :: S.UGen
+  } deriving (Show)
+pause :: Pause
+pause = Pause {
+  gate = 0.0,
+  id_ = 0.0
+  }
+mkPause :: Pause -> S.UGen
+mkPause (Pause  a' b') = S.mkOsc S.KR "Pause" [a',b'] 1
+instance Make Pause where
+  ugen = mkPause
diff --git a/Sound/SC3/UGen/Record/PauseSelf.hs b/Sound/SC3/UGen/Record/PauseSelf.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PauseSelf.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.PauseSelf where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PauseSelf = PauseSelf {
+  input :: S.UGen
+  } deriving (Show)
+pauseSelf :: PauseSelf
+pauseSelf = PauseSelf {
+  input = 0.0
+  }
+mkPauseSelf :: PauseSelf -> S.UGen
+mkPauseSelf (PauseSelf  a') = S.mkOsc S.KR "PauseSelf" [a'] 1
+instance Make PauseSelf where
+  ugen = mkPauseSelf
diff --git a/Sound/SC3/UGen/Record/PauseSelfWhenDone.hs b/Sound/SC3/UGen/Record/PauseSelfWhenDone.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PauseSelfWhenDone.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.PauseSelfWhenDone where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PauseSelfWhenDone = PauseSelfWhenDone {
+  src :: S.UGen
+  } deriving (Show)
+pauseSelfWhenDone :: PauseSelfWhenDone
+pauseSelfWhenDone = PauseSelfWhenDone {
+  src = 0.0
+  }
+mkPauseSelfWhenDone :: PauseSelfWhenDone -> S.UGen
+mkPauseSelfWhenDone (PauseSelfWhenDone  a') = S.mkOsc S.KR "PauseSelfWhenDone" [a'] 1
+instance Make PauseSelfWhenDone where
+  ugen = mkPauseSelfWhenDone
diff --git a/Sound/SC3/UGen/Record/Peak.hs b/Sound/SC3/UGen/Record/Peak.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Peak.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Peak where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Peak = Peak {
+  rate :: S.Rate,
+  trig :: S.UGen,
+  reset :: S.UGen
+  } deriving (Show)
+peak :: Peak
+peak = Peak {
+  rate = S.AR,
+  trig = 0.0,
+  reset = 0.0
+  }
+mkPeak :: Peak -> S.UGen
+mkPeak (Peak r a' b') = S.mkOsc r "Peak" [a',b'] 1
+instance Make Peak where
+  ugen = mkPeak
diff --git a/Sound/SC3/UGen/Record/PeakFollower.hs b/Sound/SC3/UGen/Record/PeakFollower.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PeakFollower.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.PeakFollower where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PeakFollower = PeakFollower {
+  rate :: S.Rate,
+  input :: S.UGen,
+  decay :: S.UGen
+  } deriving (Show)
+peakFollower :: PeakFollower
+peakFollower = PeakFollower {
+  rate = S.AR,
+  input = 0.0,
+  decay = 0.999
+  }
+mkPeakFollower :: PeakFollower -> S.UGen
+mkPeakFollower (PeakFollower r a' b') = S.mkOsc r "PeakFollower" [a',b'] 1
+instance Make PeakFollower where
+  ugen = mkPeakFollower
diff --git a/Sound/SC3/UGen/Record/Phasor.hs b/Sound/SC3/UGen/Record/Phasor.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Phasor.hs
@@ -0,0 +1,24 @@
+module Sound.SC3.UGen.Record.Phasor where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Phasor = Phasor {
+  rate :: S.Rate,
+  trig :: S.UGen,
+  rate_ :: S.UGen,
+  start :: S.UGen,
+  end :: S.UGen,
+  resetPos :: S.UGen
+  } deriving (Show)
+phasor :: Phasor
+phasor = Phasor {
+  rate = S.AR,
+  trig = 0.0,
+  rate_ = 1.0,
+  start = 0.0,
+  end = 1.0,
+  resetPos = 0.0
+  }
+mkPhasor :: Phasor -> S.UGen
+mkPhasor (Phasor r a' b' c' d' e') = S.mkOsc r "Phasor" [a',b',c',d',e'] 1
+instance Make Phasor where
+  ugen = mkPhasor
diff --git a/Sound/SC3/UGen/Record/Pitch.hs b/Sound/SC3/UGen/Record/Pitch.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Pitch.hs
@@ -0,0 +1,32 @@
+module Sound.SC3.UGen.Record.Pitch where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Pitch = Pitch {
+  input :: S.UGen,
+  initFreq :: S.UGen,
+  minFreq :: S.UGen,
+  maxFreq :: S.UGen,
+  execFreq :: S.UGen,
+  maxBinsPerOctave :: S.UGen,
+  median :: S.UGen,
+  ampThreshold :: S.UGen,
+  peakThreshold :: S.UGen,
+  downSample :: S.UGen
+  } deriving (Show)
+pitch :: Pitch
+pitch = Pitch {
+  input = 0.0,
+  initFreq = 440.0,
+  minFreq = 60.0,
+  maxFreq = 4000.0,
+  execFreq = 100.0,
+  maxBinsPerOctave = 16.0,
+  median = 1.0,
+  ampThreshold = 0.01,
+  peakThreshold = 0.5,
+  downSample = 1.0
+  }
+mkPitch :: Pitch -> S.UGen
+mkPitch (Pitch  a' b' c' d' e' f' g' h' i' j') = S.mkOsc S.KR "Pitch" [a',b',c',d',e',f',g',h',i',j'] 2
+instance Make Pitch where
+  ugen = mkPitch
diff --git a/Sound/SC3/UGen/Record/PitchShift.hs b/Sound/SC3/UGen/Record/PitchShift.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PitchShift.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.PitchShift where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PitchShift = PitchShift {
+  input :: S.UGen,
+  windowSize :: S.UGen,
+  pitchRatio :: S.UGen,
+  pitchDispersion :: S.UGen,
+  timeDispersion :: S.UGen
+  } deriving (Show)
+pitchShift :: PitchShift
+pitchShift = PitchShift {
+  input = 0.0,
+  windowSize = 0.2,
+  pitchRatio = 1.0,
+  pitchDispersion = 0.0,
+  timeDispersion = 0.0
+  }
+mkPitchShift :: PitchShift -> S.UGen
+mkPitchShift (PitchShift  a' b' c' d' e') = S.mkOsc S.AR "PitchShift" [a',b',c',d',e'] 1
+instance Make PitchShift where
+  ugen = mkPitchShift
diff --git a/Sound/SC3/UGen/Record/PlayBuf.hs b/Sound/SC3/UGen/Record/PlayBuf.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PlayBuf.hs
@@ -0,0 +1,26 @@
+module Sound.SC3.UGen.Record.PlayBuf where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PlayBuf = PlayBuf {
+  rate :: S.Rate,
+  numChannels :: S.UGen,
+  bufnum :: S.UGen,
+  rate_ :: S.UGen,
+  trigger :: S.UGen,
+  startPos :: S.UGen,
+  loop :: S.UGen
+  } deriving (Show)
+playBuf :: PlayBuf
+playBuf = PlayBuf {
+  rate = S.AR,
+  numChannels = 0.0,
+  bufnum = 0.0,
+  rate_ = 1.0,
+  trigger = 1.0,
+  startPos = 0.0,
+  loop = 0.0
+  }
+mkPlayBuf :: PlayBuf -> S.UGen
+mkPlayBuf (PlayBuf r a' b' c' d' e' f') = S.mkOsc r "PlayBuf" [a',b',c',d',e',f'] 1
+instance Make PlayBuf where
+  ugen = mkPlayBuf
diff --git a/Sound/SC3/UGen/Record/Pluck.hs b/Sound/SC3/UGen/Record/Pluck.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Pluck.hs
@@ -0,0 +1,24 @@
+module Sound.SC3.UGen.Record.Pluck where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Pluck = Pluck {
+  input :: S.UGen,
+  trig :: S.UGen,
+  maxdelaytime :: S.UGen,
+  delaytime :: S.UGen,
+  decaytime :: S.UGen,
+  coef :: S.UGen
+  } deriving (Show)
+pluck :: Pluck
+pluck = Pluck {
+  input = 0.0,
+  trig = 1.0,
+  maxdelaytime = 0.2,
+  delaytime = 0.2,
+  decaytime = 1.0,
+  coef = 0.5
+  }
+mkPluck :: Pluck -> S.UGen
+mkPluck (Pluck  a' b' c' d' e' f') = S.mkOsc S.AR "Pluck" [a',b',c',d',e',f'] 1
+instance Make Pluck where
+  ugen = mkPluck
diff --git a/Sound/SC3/UGen/Record/Pulse.hs b/Sound/SC3/UGen/Record/Pulse.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Pulse.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Pulse where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Pulse = Pulse {
+  freq :: S.UGen,
+  width :: S.UGen
+  } deriving (Show)
+pulse :: Pulse
+pulse = Pulse {
+  freq = 440.0,
+  width = 0.5
+  }
+mkPulse :: Pulse -> S.UGen
+mkPulse (Pulse  a' b') = S.mkOsc S.AR "Pulse" [a',b'] 1
+instance Make Pulse where
+  ugen = mkPulse
diff --git a/Sound/SC3/UGen/Record/PulseCount.hs b/Sound/SC3/UGen/Record/PulseCount.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PulseCount.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.PulseCount where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PulseCount = PulseCount {
+  rate :: S.Rate,
+  trig :: S.UGen,
+  reset :: S.UGen
+  } deriving (Show)
+pulseCount :: PulseCount
+pulseCount = PulseCount {
+  rate = S.AR,
+  trig = 0.0,
+  reset = 0.0
+  }
+mkPulseCount :: PulseCount -> S.UGen
+mkPulseCount (PulseCount r a' b') = S.mkOsc r "PulseCount" [a',b'] 1
+instance Make PulseCount where
+  ugen = mkPulseCount
diff --git a/Sound/SC3/UGen/Record/PulseDivider.hs b/Sound/SC3/UGen/Record/PulseDivider.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/PulseDivider.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.PulseDivider where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data PulseDivider = PulseDivider {
+  rate :: S.Rate,
+  trig :: S.UGen,
+  div_ :: S.UGen,
+  start :: S.UGen
+  } deriving (Show)
+pulseDivider :: PulseDivider
+pulseDivider = PulseDivider {
+  rate = S.AR,
+  trig = 0.0,
+  div_ = 2.0,
+  start = 0.0
+  }
+mkPulseDivider :: PulseDivider -> S.UGen
+mkPulseDivider (PulseDivider r a' b' c') = S.mkOsc r "PulseDivider" [a',b',c'] 1
+instance Make PulseDivider where
+  ugen = mkPulseDivider
diff --git a/Sound/SC3/UGen/Record/QuadC.hs b/Sound/SC3/UGen/Record/QuadC.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/QuadC.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.QuadC where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data QuadC = QuadC {
+  freq :: S.UGen,
+  a :: S.UGen,
+  b :: S.UGen,
+  c :: S.UGen,
+  xi :: S.UGen
+  } deriving (Show)
+quadC :: QuadC
+quadC = QuadC {
+  freq = 22050.0,
+  a = 1.0,
+  b = -1.0,
+  c = -0.75,
+  xi = 0.0
+  }
+mkQuadC :: QuadC -> S.UGen
+mkQuadC (QuadC  a' b' c' d' e') = S.mkOsc S.AR "QuadC" [a',b',c',d',e'] 1
+instance Make QuadC where
+  ugen = mkQuadC
diff --git a/Sound/SC3/UGen/Record/QuadL.hs b/Sound/SC3/UGen/Record/QuadL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/QuadL.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.QuadL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data QuadL = QuadL {
+  freq :: S.UGen,
+  a :: S.UGen,
+  b :: S.UGen,
+  c :: S.UGen,
+  xi :: S.UGen
+  } deriving (Show)
+quadL :: QuadL
+quadL = QuadL {
+  freq = 22050.0,
+  a = 1.0,
+  b = -1.0,
+  c = -0.75,
+  xi = 0.0
+  }
+mkQuadL :: QuadL -> S.UGen
+mkQuadL (QuadL  a' b' c' d' e') = S.mkOsc S.AR "QuadL" [a',b',c',d',e'] 1
+instance Make QuadL where
+  ugen = mkQuadL
diff --git a/Sound/SC3/UGen/Record/QuadN.hs b/Sound/SC3/UGen/Record/QuadN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/QuadN.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.QuadN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data QuadN = QuadN {
+  freq :: S.UGen,
+  a :: S.UGen,
+  b :: S.UGen,
+  c :: S.UGen,
+  xi :: S.UGen
+  } deriving (Show)
+quadN :: QuadN
+quadN = QuadN {
+  freq = 22050.0,
+  a = 1.0,
+  b = -1.0,
+  c = -0.75,
+  xi = 0.0
+  }
+mkQuadN :: QuadN -> S.UGen
+mkQuadN (QuadN  a' b' c' d' e') = S.mkOsc S.AR "QuadN" [a',b',c',d',e'] 1
+instance Make QuadN where
+  ugen = mkQuadN
diff --git a/Sound/SC3/UGen/Record/RHPF.hs b/Sound/SC3/UGen/Record/RHPF.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/RHPF.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.RHPF where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data RHPF = RHPF {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen,
+  rq :: S.UGen
+  } deriving (Show)
+rHPF :: RHPF
+rHPF = RHPF {
+  rate = S.AR,
+  input = 0.0,
+  freq = 440.0,
+  rq = 1.0
+  }
+mkRHPF :: RHPF -> S.UGen
+mkRHPF (RHPF r a' b' c') = S.mkOsc r "RHPF" [a',b',c'] 1
+instance Make RHPF where
+  ugen = mkRHPF
diff --git a/Sound/SC3/UGen/Record/RLPF.hs b/Sound/SC3/UGen/Record/RLPF.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/RLPF.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.RLPF where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data RLPF = RLPF {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen,
+  rq :: S.UGen
+  } deriving (Show)
+rLPF :: RLPF
+rLPF = RLPF {
+  rate = S.AR,
+  input = 0.0,
+  freq = 440.0,
+  rq = 1.0
+  }
+mkRLPF :: RLPF -> S.UGen
+mkRLPF (RLPF r a' b' c') = S.mkOsc r "RLPF" [a',b',c'] 1
+instance Make RLPF where
+  ugen = mkRLPF
diff --git a/Sound/SC3/UGen/Record/Ramp.hs b/Sound/SC3/UGen/Record/Ramp.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Ramp.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Ramp where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Ramp = Ramp {
+  rate :: S.Rate,
+  input :: S.UGen,
+  lagTime :: S.UGen
+  } deriving (Show)
+ramp :: Ramp
+ramp = Ramp {
+  rate = S.AR,
+  input = 0.0,
+  lagTime = 0.1
+  }
+mkRamp :: Ramp -> S.UGen
+mkRamp (Ramp r a' b') = S.mkOsc r "Ramp" [a',b'] 1
+instance Make Ramp where
+  ugen = mkRamp
diff --git a/Sound/SC3/UGen/Record/Rand.hs b/Sound/SC3/UGen/Record/Rand.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Rand.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Rand where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Rand = Rand {
+  lo :: S.UGen,
+  hi :: S.UGen
+  } deriving (Show)
+rand :: Rand
+rand = Rand {
+  lo = 0.0,
+  hi = 1.0
+  }
+mkRand :: Rand -> S.UGen
+mkRand (Rand  a' b') = S.mkOsc S.IR "Rand" [a',b'] 1
+instance Make Rand where
+  ugen = mkRand
diff --git a/Sound/SC3/UGen/Record/RandID.hs b/Sound/SC3/UGen/Record/RandID.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/RandID.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.RandID where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data RandID = RandID {
+  rate :: S.Rate,
+  id_ :: S.UGen
+  } deriving (Show)
+randID :: RandID
+randID = RandID {
+  rate = S.AR,
+  id_ = 0.0
+  }
+mkRandID :: RandID -> S.UGen
+mkRandID (RandID r a') = S.mkOsc r "RandID" [a'] 1
+instance Make RandID where
+  ugen = mkRandID
diff --git a/Sound/SC3/UGen/Record/RandSeed.hs b/Sound/SC3/UGen/Record/RandSeed.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/RandSeed.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.RandSeed where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data RandSeed = RandSeed {
+  rate :: S.Rate,
+  trig :: S.UGen,
+  seed :: S.UGen
+  } deriving (Show)
+randSeed :: RandSeed
+randSeed = RandSeed {
+  rate = S.AR,
+  trig = 0.0,
+  seed = 56789.0
+  }
+mkRandSeed :: RandSeed -> S.UGen
+mkRandSeed (RandSeed r a' b') = S.mkOsc r "RandSeed" [a',b'] 1
+instance Make RandSeed where
+  ugen = mkRandSeed
diff --git a/Sound/SC3/UGen/Record/RecordBuf.hs b/Sound/SC3/UGen/Record/RecordBuf.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/RecordBuf.hs
@@ -0,0 +1,30 @@
+module Sound.SC3.UGen.Record.RecordBuf where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data RecordBuf = RecordBuf {
+  rate :: S.Rate,
+  inputArray :: S.UGen,
+  bufnum :: S.UGen,
+  offset :: S.UGen,
+  recLevel :: S.UGen,
+  preLevel :: S.UGen,
+  run :: S.UGen,
+  loop :: S.UGen,
+  trigger :: S.UGen
+  } deriving (Show)
+recordBuf :: RecordBuf
+recordBuf = RecordBuf {
+  rate = S.AR,
+  inputArray = 0.0,
+  bufnum = 0.0,
+  offset = 0.0,
+  recLevel = 1.0,
+  preLevel = 0.0,
+  run = 1.0,
+  loop = 1.0,
+  trigger = 1.0
+  }
+mkRecordBuf :: RecordBuf -> S.UGen
+mkRecordBuf (RecordBuf r a' b' c' d' e' f' g' h') = S.mkOsc r "RecordBuf" [a',b',c',d',e',f',g',h'] 1
+instance Make RecordBuf where
+  ugen = mkRecordBuf
diff --git a/Sound/SC3/UGen/Record/ReplaceOut.hs b/Sound/SC3/UGen/Record/ReplaceOut.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/ReplaceOut.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.ReplaceOut where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data ReplaceOut = ReplaceOut {
+  rate :: S.Rate,
+  bus :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+replaceOut :: ReplaceOut
+replaceOut = ReplaceOut {
+  rate = S.AR,
+  bus = 0.0,
+  input = 0.0
+  }
+mkReplaceOut :: ReplaceOut -> S.UGen
+mkReplaceOut (ReplaceOut r a' b') = S.mkOsc r "ReplaceOut" [a',b'] 1
+instance Make ReplaceOut where
+  ugen = mkReplaceOut
diff --git a/Sound/SC3/UGen/Record/Resonz.hs b/Sound/SC3/UGen/Record/Resonz.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Resonz.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Resonz where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Resonz = Resonz {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen,
+  bwr :: S.UGen
+  } deriving (Show)
+resonz :: Resonz
+resonz = Resonz {
+  rate = S.AR,
+  input = 0.0,
+  freq = 440.0,
+  bwr = 1.0
+  }
+mkResonz :: Resonz -> S.UGen
+mkResonz (Resonz r a' b' c') = S.mkOsc r "Resonz" [a',b',c'] 1
+instance Make Resonz where
+  ugen = mkResonz
diff --git a/Sound/SC3/UGen/Record/Ringz.hs b/Sound/SC3/UGen/Record/Ringz.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Ringz.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Ringz where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Ringz = Ringz {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen,
+  decaytime :: S.UGen
+  } deriving (Show)
+ringz :: Ringz
+ringz = Ringz {
+  rate = S.AR,
+  input = 0.0,
+  freq = 440.0,
+  decaytime = 1.0
+  }
+mkRingz :: Ringz -> S.UGen
+mkRingz (Ringz r a' b' c') = S.mkOsc r "Ringz" [a',b',c'] 1
+instance Make Ringz where
+  ugen = mkRingz
diff --git a/Sound/SC3/UGen/Record/Rotate2.hs b/Sound/SC3/UGen/Record/Rotate2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Rotate2.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Rotate2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Rotate2 = Rotate2 {
+  rate :: S.Rate,
+  x :: S.UGen,
+  y :: S.UGen,
+  pos :: S.UGen
+  } deriving (Show)
+rotate2 :: Rotate2
+rotate2 = Rotate2 {
+  rate = S.AR,
+  x = 0.0,
+  y = 0.0,
+  pos = 0.0
+  }
+mkRotate2 :: Rotate2 -> S.UGen
+mkRotate2 (Rotate2 r a' b' c') = S.mkOsc r "Rotate2" [a',b',c'] 2
+instance Make Rotate2 where
+  ugen = mkRotate2
diff --git a/Sound/SC3/UGen/Record/RunningMax.hs b/Sound/SC3/UGen/Record/RunningMax.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/RunningMax.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.RunningMax where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data RunningMax = RunningMax {
+  rate :: S.Rate,
+  trig :: S.UGen,
+  reset :: S.UGen
+  } deriving (Show)
+runningMax :: RunningMax
+runningMax = RunningMax {
+  rate = S.AR,
+  trig = 0.0,
+  reset = 0.0
+  }
+mkRunningMax :: RunningMax -> S.UGen
+mkRunningMax (RunningMax r a' b') = S.mkOsc r "RunningMax" [a',b'] 1
+instance Make RunningMax where
+  ugen = mkRunningMax
diff --git a/Sound/SC3/UGen/Record/RunningMin.hs b/Sound/SC3/UGen/Record/RunningMin.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/RunningMin.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.RunningMin where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data RunningMin = RunningMin {
+  rate :: S.Rate,
+  trig :: S.UGen,
+  reset :: S.UGen
+  } deriving (Show)
+runningMin :: RunningMin
+runningMin = RunningMin {
+  rate = S.AR,
+  trig = 0.0,
+  reset = 0.0
+  }
+mkRunningMin :: RunningMin -> S.UGen
+mkRunningMin (RunningMin r a' b') = S.mkOsc r "RunningMin" [a',b'] 1
+instance Make RunningMin where
+  ugen = mkRunningMin
diff --git a/Sound/SC3/UGen/Record/RunningSum.hs b/Sound/SC3/UGen/Record/RunningSum.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/RunningSum.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.RunningSum where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data RunningSum = RunningSum {
+  rate :: S.Rate,
+  input :: S.UGen,
+  numsamp :: S.UGen
+  } deriving (Show)
+runningSum :: RunningSum
+runningSum = RunningSum {
+  rate = S.AR,
+  input = 0.0,
+  numsamp = 40.0
+  }
+mkRunningSum :: RunningSum -> S.UGen
+mkRunningSum (RunningSum r a' b') = S.mkOsc r "RunningSum" [a',b'] 1
+instance Make RunningSum where
+  ugen = mkRunningSum
diff --git a/Sound/SC3/UGen/Record/SOS.hs b/Sound/SC3/UGen/Record/SOS.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/SOS.hs
@@ -0,0 +1,26 @@
+module Sound.SC3.UGen.Record.SOS where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data SOS = SOS {
+  rate :: S.Rate,
+  input :: S.UGen,
+  a0 :: S.UGen,
+  a1 :: S.UGen,
+  a2 :: S.UGen,
+  b1 :: S.UGen,
+  b2 :: S.UGen
+  } deriving (Show)
+sOS :: SOS
+sOS = SOS {
+  rate = S.AR,
+  input = 0.0,
+  a0 = 0.0,
+  a1 = 0.0,
+  a2 = 0.0,
+  b1 = 0.0,
+  b2 = 0.0
+  }
+mkSOS :: SOS -> S.UGen
+mkSOS (SOS r a' b' c' d' e' f') = S.mkOsc r "SOS" [a',b',c',d',e',f'] 1
+instance Make SOS where
+  ugen = mkSOS
diff --git a/Sound/SC3/UGen/Record/Saw.hs b/Sound/SC3/UGen/Record/Saw.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Saw.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.Saw where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Saw = Saw {
+  freq :: S.UGen
+  } deriving (Show)
+saw :: Saw
+saw = Saw {
+  freq = 440.0
+  }
+mkSaw :: Saw -> S.UGen
+mkSaw (Saw  a') = S.mkOsc S.AR "Saw" [a'] 1
+instance Make Saw where
+  ugen = mkSaw
diff --git a/Sound/SC3/UGen/Record/Schmidt.hs b/Sound/SC3/UGen/Record/Schmidt.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Schmidt.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Schmidt where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Schmidt = Schmidt {
+  rate :: S.Rate,
+  input :: S.UGen,
+  lo :: S.UGen,
+  hi :: S.UGen
+  } deriving (Show)
+schmidt :: Schmidt
+schmidt = Schmidt {
+  rate = S.AR,
+  input = 0.0,
+  lo = 0.0,
+  hi = 1.0
+  }
+mkSchmidt :: Schmidt -> S.UGen
+mkSchmidt (Schmidt r a' b' c') = S.mkOsc r "Schmidt" [a',b',c'] 1
+instance Make Schmidt where
+  ugen = mkSchmidt
diff --git a/Sound/SC3/UGen/Record/ScopeOut.hs b/Sound/SC3/UGen/Record/ScopeOut.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/ScopeOut.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.ScopeOut where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data ScopeOut = ScopeOut {
+  rate :: S.Rate,
+  inputArray :: S.UGen,
+  bufnum :: S.UGen
+  } deriving (Show)
+scopeOut :: ScopeOut
+scopeOut = ScopeOut {
+  rate = S.AR,
+  inputArray = 0.0,
+  bufnum = 0.0
+  }
+mkScopeOut :: ScopeOut -> S.UGen
+mkScopeOut (ScopeOut r a' b') = S.mkOsc r "ScopeOut" [a',b'] 1
+instance Make ScopeOut where
+  ugen = mkScopeOut
diff --git a/Sound/SC3/UGen/Record/Select.hs b/Sound/SC3/UGen/Record/Select.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Select.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Select where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Select = Select {
+  rate :: S.Rate,
+  which :: S.UGen,
+  array :: S.UGen
+  } deriving (Show)
+select :: Select
+select = Select {
+  rate = S.AR,
+  which = 0.0,
+  array = 0.0
+  }
+mkSelect :: Select -> S.UGen
+mkSelect (Select r a' b') = S.mkOsc r "Select" [a',b'] 1
+instance Make Select where
+  ugen = mkSelect
diff --git a/Sound/SC3/UGen/Record/SendTrig.hs b/Sound/SC3/UGen/Record/SendTrig.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/SendTrig.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.SendTrig where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data SendTrig = SendTrig {
+  rate :: S.Rate,
+  input :: S.UGen,
+  id_ :: S.UGen,
+  value :: S.UGen
+  } deriving (Show)
+sendTrig :: SendTrig
+sendTrig = SendTrig {
+  rate = S.AR,
+  input = 0.0,
+  id_ = 0.0,
+  value = 0.0
+  }
+mkSendTrig :: SendTrig -> S.UGen
+mkSendTrig (SendTrig r a' b' c') = S.mkOsc r "SendTrig" [a',b',c'] 1
+instance Make SendTrig where
+  ugen = mkSendTrig
diff --git a/Sound/SC3/UGen/Record/SetBuf.hs b/Sound/SC3/UGen/Record/SetBuf.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/SetBuf.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.SetBuf where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data SetBuf = SetBuf {
+  buf :: S.UGen,
+  values :: S.UGen,
+  offset :: S.UGen
+  } deriving (Show)
+setBuf :: SetBuf
+setBuf = SetBuf {
+  buf = 0.0,
+  values = 0.0,
+  offset = 0.0
+  }
+mkSetBuf :: SetBuf -> S.UGen
+mkSetBuf (SetBuf  a' b' c') = S.mkOsc S.IR "SetBuf" [a',b',c'] 1
+instance Make SetBuf where
+  ugen = mkSetBuf
diff --git a/Sound/SC3/UGen/Record/SetResetFF.hs b/Sound/SC3/UGen/Record/SetResetFF.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/SetResetFF.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.SetResetFF where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data SetResetFF = SetResetFF {
+  rate :: S.Rate,
+  trig :: S.UGen,
+  reset :: S.UGen
+  } deriving (Show)
+setResetFF :: SetResetFF
+setResetFF = SetResetFF {
+  rate = S.AR,
+  trig = 0.0,
+  reset = 0.0
+  }
+mkSetResetFF :: SetResetFF -> S.UGen
+mkSetResetFF (SetResetFF r a' b') = S.mkOsc r "SetResetFF" [a',b'] 1
+instance Make SetResetFF where
+  ugen = mkSetResetFF
diff --git a/Sound/SC3/UGen/Record/Shaper.hs b/Sound/SC3/UGen/Record/Shaper.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Shaper.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Shaper where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Shaper = Shaper {
+  rate :: S.Rate,
+  bufnum :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+shaper :: Shaper
+shaper = Shaper {
+  rate = S.AR,
+  bufnum = 0.0,
+  input = 0.0
+  }
+mkShaper :: Shaper -> S.UGen
+mkShaper (Shaper r a' b') = S.mkOsc r "Shaper" [a',b'] 1
+instance Make Shaper where
+  ugen = mkShaper
diff --git a/Sound/SC3/UGen/Record/SharedIn.hs b/Sound/SC3/UGen/Record/SharedIn.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/SharedIn.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.SharedIn where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data SharedIn = SharedIn {
+  bus :: S.UGen,
+  numChannels :: S.UGen
+  } deriving (Show)
+sharedIn :: SharedIn
+sharedIn = SharedIn {
+  bus = 0.0,
+  numChannels = 1.0
+  }
+mkSharedIn :: SharedIn -> S.UGen
+mkSharedIn (SharedIn  a' b') = S.mkOsc S.KR "SharedIn" [a',b'] 1
+instance Make SharedIn where
+  ugen = mkSharedIn
diff --git a/Sound/SC3/UGen/Record/SharedOut.hs b/Sound/SC3/UGen/Record/SharedOut.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/SharedOut.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.SharedOut where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data SharedOut = SharedOut {
+  bus :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+sharedOut :: SharedOut
+sharedOut = SharedOut {
+  bus = 0.0,
+  input = 0.0
+  }
+mkSharedOut :: SharedOut -> S.UGen
+mkSharedOut (SharedOut  a' b') = S.mkOsc S.KR "SharedOut" [a',b'] 1
+instance Make SharedOut where
+  ugen = mkSharedOut
diff --git a/Sound/SC3/UGen/Record/Silent.hs b/Sound/SC3/UGen/Record/Silent.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Silent.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.Silent where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Silent = Silent {
+  numChannels :: S.UGen
+  } deriving (Show)
+silent :: Silent
+silent = Silent {
+  numChannels = 1.0
+  }
+mkSilent :: Silent -> S.UGen
+mkSilent (Silent  a') = S.mkOsc S.AR "Silent" [a'] 1
+instance Make Silent where
+  ugen = mkSilent
diff --git a/Sound/SC3/UGen/Record/SinOsc.hs b/Sound/SC3/UGen/Record/SinOsc.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/SinOsc.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.SinOsc where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data SinOsc = SinOsc {
+  rate :: S.Rate,
+  freq :: S.UGen,
+  phase :: S.UGen
+  } deriving (Show)
+sinOsc :: SinOsc
+sinOsc = SinOsc {
+  rate = S.AR,
+  freq = 440.0,
+  phase = 0.0
+  }
+mkSinOsc :: SinOsc -> S.UGen
+mkSinOsc (SinOsc r a' b') = S.mkOsc r "SinOsc" [a',b'] 1
+instance Make SinOsc where
+  ugen = mkSinOsc
diff --git a/Sound/SC3/UGen/Record/SinOscFB.hs b/Sound/SC3/UGen/Record/SinOscFB.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/SinOscFB.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.SinOscFB where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data SinOscFB = SinOscFB {
+  rate :: S.Rate,
+  freq :: S.UGen,
+  feedback :: S.UGen
+  } deriving (Show)
+sinOscFB :: SinOscFB
+sinOscFB = SinOscFB {
+  rate = S.AR,
+  freq = 440.0,
+  feedback = 0.0
+  }
+mkSinOscFB :: SinOscFB -> S.UGen
+mkSinOscFB (SinOscFB r a' b') = S.mkOsc r "SinOscFB" [a',b'] 1
+instance Make SinOscFB where
+  ugen = mkSinOscFB
diff --git a/Sound/SC3/UGen/Record/Slew.hs b/Sound/SC3/UGen/Record/Slew.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Slew.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Slew where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Slew = Slew {
+  rate :: S.Rate,
+  input :: S.UGen,
+  up :: S.UGen,
+  dn :: S.UGen
+  } deriving (Show)
+slew :: Slew
+slew = Slew {
+  rate = S.AR,
+  input = 0.0,
+  up = 1.0,
+  dn = 1.0
+  }
+mkSlew :: Slew -> S.UGen
+mkSlew (Slew r a' b' c') = S.mkOsc r "Slew" [a',b',c'] 1
+instance Make Slew where
+  ugen = mkSlew
diff --git a/Sound/SC3/UGen/Record/Slope.hs b/Sound/SC3/UGen/Record/Slope.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Slope.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Slope where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Slope = Slope {
+  rate :: S.Rate,
+  input :: S.UGen
+  } deriving (Show)
+slope :: Slope
+slope = Slope {
+  rate = S.AR,
+  input = 0.0
+  }
+mkSlope :: Slope -> S.UGen
+mkSlope (Slope r a') = S.mkOsc r "Slope" [a'] 1
+instance Make Slope where
+  ugen = mkSlope
diff --git a/Sound/SC3/UGen/Record/SpecCentroid.hs b/Sound/SC3/UGen/Record/SpecCentroid.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/SpecCentroid.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.SpecCentroid where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data SpecCentroid = SpecCentroid {
+  buffer :: S.UGen
+  } deriving (Show)
+specCentroid :: SpecCentroid
+specCentroid = SpecCentroid {
+  buffer = 0.0
+  }
+mkSpecCentroid :: SpecCentroid -> S.UGen
+mkSpecCentroid (SpecCentroid  a') = S.mkOsc S.KR "SpecCentroid" [a'] 1
+instance Make SpecCentroid where
+  ugen = mkSpecCentroid
diff --git a/Sound/SC3/UGen/Record/SpecFlatness.hs b/Sound/SC3/UGen/Record/SpecFlatness.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/SpecFlatness.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.SpecFlatness where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data SpecFlatness = SpecFlatness {
+  buffer :: S.UGen
+  } deriving (Show)
+specFlatness :: SpecFlatness
+specFlatness = SpecFlatness {
+  buffer = 0.0
+  }
+mkSpecFlatness :: SpecFlatness -> S.UGen
+mkSpecFlatness (SpecFlatness  a') = S.mkOsc S.KR "SpecFlatness" [a'] 1
+instance Make SpecFlatness where
+  ugen = mkSpecFlatness
diff --git a/Sound/SC3/UGen/Record/SpecPcile.hs b/Sound/SC3/UGen/Record/SpecPcile.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/SpecPcile.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.SpecPcile where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data SpecPcile = SpecPcile {
+  buffer :: S.UGen,
+  fraction :: S.UGen,
+  interpolate :: S.UGen
+  } deriving (Show)
+specPcile :: SpecPcile
+specPcile = SpecPcile {
+  buffer = 0.0,
+  fraction = 0.5,
+  interpolate = 0.0
+  }
+mkSpecPcile :: SpecPcile -> S.UGen
+mkSpecPcile (SpecPcile  a' b' c') = S.mkOsc S.KR "SpecPcile" [a',b',c'] 1
+instance Make SpecPcile where
+  ugen = mkSpecPcile
diff --git a/Sound/SC3/UGen/Record/Spring.hs b/Sound/SC3/UGen/Record/Spring.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Spring.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Spring where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Spring = Spring {
+  input :: S.UGen,
+  spring_ :: S.UGen,
+  damp :: S.UGen
+  } deriving (Show)
+spring :: Spring
+spring = Spring {
+  input = 0.0,
+  spring_ = 1.0,
+  damp = 0.0
+  }
+mkSpring :: Spring -> S.UGen
+mkSpring (Spring  a' b' c') = S.mkOsc S.AR "Spring" [a',b',c'] 1
+instance Make Spring where
+  ugen = mkSpring
diff --git a/Sound/SC3/UGen/Record/StandardL.hs b/Sound/SC3/UGen/Record/StandardL.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/StandardL.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.StandardL where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data StandardL = StandardL {
+  freq :: S.UGen,
+  k :: S.UGen,
+  xi :: S.UGen,
+  yi :: S.UGen
+  } deriving (Show)
+standardL :: StandardL
+standardL = StandardL {
+  freq = 22050.0,
+  k = 1.0,
+  xi = 0.5,
+  yi = 0.0
+  }
+mkStandardL :: StandardL -> S.UGen
+mkStandardL (StandardL  a' b' c' d') = S.mkOsc S.AR "StandardL" [a',b',c',d'] 1
+instance Make StandardL where
+  ugen = mkStandardL
diff --git a/Sound/SC3/UGen/Record/StandardN.hs b/Sound/SC3/UGen/Record/StandardN.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/StandardN.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.StandardN where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data StandardN = StandardN {
+  freq :: S.UGen,
+  k :: S.UGen,
+  xi :: S.UGen,
+  yi :: S.UGen
+  } deriving (Show)
+standardN :: StandardN
+standardN = StandardN {
+  freq = 22050.0,
+  k = 1.0,
+  xi = 0.5,
+  yi = 0.0
+  }
+mkStandardN :: StandardN -> S.UGen
+mkStandardN (StandardN  a' b' c' d') = S.mkOsc S.AR "StandardN" [a',b',c',d'] 1
+instance Make StandardN where
+  ugen = mkStandardN
diff --git a/Sound/SC3/UGen/Record/Stepper.hs b/Sound/SC3/UGen/Record/Stepper.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Stepper.hs
@@ -0,0 +1,26 @@
+module Sound.SC3.UGen.Record.Stepper where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Stepper = Stepper {
+  rate :: S.Rate,
+  trig :: S.UGen,
+  reset :: S.UGen,
+  min_ :: S.UGen,
+  max_ :: S.UGen,
+  step :: S.UGen,
+  resetval :: S.UGen
+  } deriving (Show)
+stepper :: Stepper
+stepper = Stepper {
+  rate = S.AR,
+  trig = 0.0,
+  reset = 0.0,
+  min_ = 0.0,
+  max_ = 7.0,
+  step = 1.0,
+  resetval = 0.0
+  }
+mkStepper :: Stepper -> S.UGen
+mkStepper (Stepper r a' b' c' d' e' f') = S.mkOsc r "Stepper" [a',b',c',d',e',f'] 1
+instance Make Stepper where
+  ugen = mkStepper
diff --git a/Sound/SC3/UGen/Record/StereoConvolution2L.hs b/Sound/SC3/UGen/Record/StereoConvolution2L.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/StereoConvolution2L.hs
@@ -0,0 +1,24 @@
+module Sound.SC3.UGen.Record.StereoConvolution2L where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data StereoConvolution2L = StereoConvolution2L {
+  input :: S.UGen,
+  kernelL :: S.UGen,
+  kernelR :: S.UGen,
+  trigger :: S.UGen,
+  framesize :: S.UGen,
+  crossfade :: S.UGen
+  } deriving (Show)
+stereoConvolution2L :: StereoConvolution2L
+stereoConvolution2L = StereoConvolution2L {
+  input = 0.0,
+  kernelL = 0.0,
+  kernelR = 0.0,
+  trigger = 0.0,
+  framesize = 0.0,
+  crossfade = 1.0
+  }
+mkStereoConvolution2L :: StereoConvolution2L -> S.UGen
+mkStereoConvolution2L (StereoConvolution2L  a' b' c' d' e' f') = S.mkOsc S.AR "StereoConvolution2L" [a',b',c',d',e',f'] 2
+instance Make StereoConvolution2L where
+  ugen = mkStereoConvolution2L
diff --git a/Sound/SC3/UGen/Record/Sweep.hs b/Sound/SC3/UGen/Record/Sweep.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Sweep.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Sweep where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Sweep = Sweep {
+  rate :: S.Rate,
+  trig :: S.UGen,
+  rate_ :: S.UGen
+  } deriving (Show)
+sweep :: Sweep
+sweep = Sweep {
+  rate = S.AR,
+  trig = 0.0,
+  rate_ = 1.0
+  }
+mkSweep :: Sweep -> S.UGen
+mkSweep (Sweep r a' b') = S.mkOsc r "Sweep" [a',b'] 1
+instance Make Sweep where
+  ugen = mkSweep
diff --git a/Sound/SC3/UGen/Record/SyncSaw.hs b/Sound/SC3/UGen/Record/SyncSaw.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/SyncSaw.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.SyncSaw where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data SyncSaw = SyncSaw {
+  rate :: S.Rate,
+  syncFreq :: S.UGen,
+  sawFreq :: S.UGen
+  } deriving (Show)
+syncSaw :: SyncSaw
+syncSaw = SyncSaw {
+  rate = S.AR,
+  syncFreq = 440.0,
+  sawFreq = 440.0
+  }
+mkSyncSaw :: SyncSaw -> S.UGen
+mkSyncSaw (SyncSaw r a' b') = S.mkOsc r "SyncSaw" [a',b'] 1
+instance Make SyncSaw where
+  ugen = mkSyncSaw
diff --git a/Sound/SC3/UGen/Record/T2A.hs b/Sound/SC3/UGen/Record/T2A.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/T2A.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.T2A where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data T2A = T2A {
+  input :: S.UGen,
+  offset :: S.UGen
+  } deriving (Show)
+t2A :: T2A
+t2A = T2A {
+  input = 0.0,
+  offset = 0.0
+  }
+mkT2A :: T2A -> S.UGen
+mkT2A (T2A  a' b') = S.mkOsc S.AR "T2A" [a',b'] 1
+instance Make T2A where
+  ugen = mkT2A
diff --git a/Sound/SC3/UGen/Record/T2K.hs b/Sound/SC3/UGen/Record/T2K.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/T2K.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.T2K where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data T2K = T2K {
+  input :: S.UGen
+  } deriving (Show)
+t2K :: T2K
+t2K = T2K {
+  input = 0.0
+  }
+mkT2K :: T2K -> S.UGen
+mkT2K (T2K  a') = S.mkOsc S.KR "T2K" [a'] 1
+instance Make T2K where
+  ugen = mkT2K
diff --git a/Sound/SC3/UGen/Record/TBall.hs b/Sound/SC3/UGen/Record/TBall.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/TBall.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.TBall where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data TBall = TBall {
+  input :: S.UGen,
+  g :: S.UGen,
+  damp :: S.UGen,
+  friction :: S.UGen
+  } deriving (Show)
+tBall :: TBall
+tBall = TBall {
+  input = 0.0,
+  g = 10.0,
+  damp = 0.0,
+  friction = 0.01
+  }
+mkTBall :: TBall -> S.UGen
+mkTBall (TBall  a' b' c' d') = S.mkOsc S.AR "TBall" [a',b',c',d'] 1
+instance Make TBall where
+  ugen = mkTBall
diff --git a/Sound/SC3/UGen/Record/TDelay.hs b/Sound/SC3/UGen/Record/TDelay.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/TDelay.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.TDelay where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data TDelay = TDelay {
+  rate :: S.Rate,
+  input :: S.UGen,
+  dur :: S.UGen
+  } deriving (Show)
+tDelay :: TDelay
+tDelay = TDelay {
+  rate = S.AR,
+  input = 0.0,
+  dur = 0.1
+  }
+mkTDelay :: TDelay -> S.UGen
+mkTDelay (TDelay r a' b') = S.mkOsc r "TDelay" [a',b'] 1
+instance Make TDelay where
+  ugen = mkTDelay
diff --git a/Sound/SC3/UGen/Record/TDuty.hs b/Sound/SC3/UGen/Record/TDuty.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/TDuty.hs
@@ -0,0 +1,24 @@
+module Sound.SC3.UGen.Record.TDuty where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data TDuty = TDuty {
+  rate :: S.Rate,
+  dur :: S.UGen,
+  reset :: S.UGen,
+  level :: S.UGen,
+  doneAction :: S.UGen,
+  gapFirst :: S.UGen
+  } deriving (Show)
+tDuty :: TDuty
+tDuty = TDuty {
+  rate = S.AR,
+  dur = 1.0,
+  reset = 0.0,
+  level = 1.0,
+  doneAction = 0.0,
+  gapFirst = 0.0
+  }
+mkTDuty :: TDuty -> S.UGen
+mkTDuty (TDuty r a' b' c' d' e') = S.mkOsc r "TDuty" [a',b',c',d',e'] 1
+instance Make TDuty where
+  ugen = mkTDuty
diff --git a/Sound/SC3/UGen/Record/TExpRand.hs b/Sound/SC3/UGen/Record/TExpRand.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/TExpRand.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.TExpRand where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data TExpRand = TExpRand {
+  rate :: S.Rate,
+  lo :: S.UGen,
+  hi :: S.UGen,
+  trig :: S.UGen
+  } deriving (Show)
+tExpRand :: TExpRand
+tExpRand = TExpRand {
+  rate = S.AR,
+  lo = 0.01,
+  hi = 1.0,
+  trig = 0.0
+  }
+mkTExpRand :: TExpRand -> S.UGen
+mkTExpRand (TExpRand r a' b' c') = S.mkOsc r "TExpRand" [a',b',c'] 1
+instance Make TExpRand where
+  ugen = mkTExpRand
diff --git a/Sound/SC3/UGen/Record/TGrains.hs b/Sound/SC3/UGen/Record/TGrains.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/TGrains.hs
@@ -0,0 +1,30 @@
+module Sound.SC3.UGen.Record.TGrains where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data TGrains = TGrains {
+  numChannels :: S.UGen,
+  trigger :: S.UGen,
+  bufnum :: S.UGen,
+  rate_ :: S.UGen,
+  centerPos :: S.UGen,
+  dur :: S.UGen,
+  pan :: S.UGen,
+  amp :: S.UGen,
+  interp :: S.UGen
+  } deriving (Show)
+tGrains :: TGrains
+tGrains = TGrains {
+  numChannels = 0.0,
+  trigger = 0.0,
+  bufnum = 0.0,
+  rate_ = 1.0,
+  centerPos = 0.0,
+  dur = 0.1,
+  pan = 0.0,
+  amp = 0.1,
+  interp = 4.0
+  }
+mkTGrains :: TGrains -> S.UGen
+mkTGrains (TGrains  a' b' c' d' e' f' g' h' i') = S.mkOsc S.AR "TGrains" [a',b',c',d',e',f',g',h',i'] 1
+instance Make TGrains where
+  ugen = mkTGrains
diff --git a/Sound/SC3/UGen/Record/TIRand.hs b/Sound/SC3/UGen/Record/TIRand.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/TIRand.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.TIRand where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data TIRand = TIRand {
+  rate :: S.Rate,
+  lo :: S.UGen,
+  hi :: S.UGen,
+  trig :: S.UGen
+  } deriving (Show)
+tIRand :: TIRand
+tIRand = TIRand {
+  rate = S.AR,
+  lo = 0.0,
+  hi = 127.0,
+  trig = 0.0
+  }
+mkTIRand :: TIRand -> S.UGen
+mkTIRand (TIRand r a' b' c') = S.mkOsc r "TIRand" [a',b',c'] 1
+instance Make TIRand where
+  ugen = mkTIRand
diff --git a/Sound/SC3/UGen/Record/TRand.hs b/Sound/SC3/UGen/Record/TRand.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/TRand.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.TRand where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data TRand = TRand {
+  rate :: S.Rate,
+  lo :: S.UGen,
+  hi :: S.UGen,
+  trig :: S.UGen
+  } deriving (Show)
+tRand :: TRand
+tRand = TRand {
+  rate = S.AR,
+  lo = 0.0,
+  hi = 1.0,
+  trig = 0.0
+  }
+mkTRand :: TRand -> S.UGen
+mkTRand (TRand r a' b' c') = S.mkOsc r "TRand" [a',b',c'] 1
+instance Make TRand where
+  ugen = mkTRand
diff --git a/Sound/SC3/UGen/Record/TWChoose.hs b/Sound/SC3/UGen/Record/TWChoose.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/TWChoose.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.TWChoose where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data TWChoose = TWChoose {
+  rate :: S.Rate,
+  trig :: S.UGen,
+  array :: S.UGen,
+  weights :: S.UGen,
+  normalize :: S.UGen
+  } deriving (Show)
+tWChoose :: TWChoose
+tWChoose = TWChoose {
+  rate = S.AR,
+  trig = 0.0,
+  array = 0.0,
+  weights = 0.0,
+  normalize = 0.0
+  }
+mkTWChoose :: TWChoose -> S.UGen
+mkTWChoose (TWChoose r a' b' c' d') = S.mkOsc r "TWChoose" [a',b',c',d'] 1
+instance Make TWChoose where
+  ugen = mkTWChoose
diff --git a/Sound/SC3/UGen/Record/TWindex.hs b/Sound/SC3/UGen/Record/TWindex.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/TWindex.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.TWindex where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data TWindex = TWindex {
+  rate :: S.Rate,
+  input :: S.UGen,
+  array :: S.UGen,
+  normalize :: S.UGen
+  } deriving (Show)
+tWindex :: TWindex
+tWindex = TWindex {
+  rate = S.AR,
+  input = 0.0,
+  array = 0.0,
+  normalize = 0.0
+  }
+mkTWindex :: TWindex -> S.UGen
+mkTWindex (TWindex r a' b' c') = S.mkOsc r "TWindex" [a',b',c'] 1
+instance Make TWindex where
+  ugen = mkTWindex
diff --git a/Sound/SC3/UGen/Record/Tap.hs b/Sound/SC3/UGen/Record/Tap.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Tap.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Tap where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Tap = Tap {
+  bufnum :: S.UGen,
+  numChannels :: S.UGen,
+  delaytime :: S.UGen
+  } deriving (Show)
+tap :: Tap
+tap = Tap {
+  bufnum = 0.0,
+  numChannels = 1.0,
+  delaytime = 0.2
+  }
+mkTap :: Tap -> S.UGen
+mkTap (Tap  a' b' c') = S.mkOsc S.AR "Tap" [a',b',c'] 1
+instance Make Tap where
+  ugen = mkTap
diff --git a/Sound/SC3/UGen/Record/Timer.hs b/Sound/SC3/UGen/Record/Timer.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Timer.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.Timer where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Timer = Timer {
+  rate :: S.Rate,
+  trig :: S.UGen
+  } deriving (Show)
+timer :: Timer
+timer = Timer {
+  rate = S.AR,
+  trig = 0.0
+  }
+mkTimer :: Timer -> S.UGen
+mkTimer (Timer r a') = S.mkOsc r "Timer" [a'] 1
+instance Make Timer where
+  ugen = mkTimer
diff --git a/Sound/SC3/UGen/Record/ToggleFF.hs b/Sound/SC3/UGen/Record/ToggleFF.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/ToggleFF.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.ToggleFF where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data ToggleFF = ToggleFF {
+  rate :: S.Rate,
+  trig :: S.UGen
+  } deriving (Show)
+toggleFF :: ToggleFF
+toggleFF = ToggleFF {
+  rate = S.AR,
+  trig = 0.0
+  }
+mkToggleFF :: ToggleFF -> S.UGen
+mkToggleFF (ToggleFF r a') = S.mkOsc r "ToggleFF" [a'] 1
+instance Make ToggleFF where
+  ugen = mkToggleFF
diff --git a/Sound/SC3/UGen/Record/Trig.hs b/Sound/SC3/UGen/Record/Trig.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Trig.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Trig where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Trig = Trig {
+  rate :: S.Rate,
+  input :: S.UGen,
+  dur :: S.UGen
+  } deriving (Show)
+trig :: Trig
+trig = Trig {
+  rate = S.AR,
+  input = 0.0,
+  dur = 0.1
+  }
+mkTrig :: Trig -> S.UGen
+mkTrig (Trig r a' b') = S.mkOsc r "Trig" [a',b'] 1
+instance Make Trig where
+  ugen = mkTrig
diff --git a/Sound/SC3/UGen/Record/Trig1.hs b/Sound/SC3/UGen/Record/Trig1.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Trig1.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.Trig1 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Trig1 = Trig1 {
+  rate :: S.Rate,
+  input :: S.UGen,
+  dur :: S.UGen
+  } deriving (Show)
+trig1 :: Trig1
+trig1 = Trig1 {
+  rate = S.AR,
+  input = 0.0,
+  dur = 0.1
+  }
+mkTrig1 :: Trig1 -> S.UGen
+mkTrig1 (Trig1 r a' b') = S.mkOsc r "Trig1" [a',b'] 1
+instance Make Trig1 where
+  ugen = mkTrig1
diff --git a/Sound/SC3/UGen/Record/TrigControl.hs b/Sound/SC3/UGen/Record/TrigControl.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/TrigControl.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.TrigControl where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data TrigControl = TrigControl {
+  rate :: S.Rate,
+  values :: S.UGen
+  } deriving (Show)
+trigControl :: TrigControl
+trigControl = TrigControl {
+  rate = S.AR,
+  values = 0.0
+  }
+mkTrigControl :: TrigControl -> S.UGen
+mkTrigControl (TrigControl r a') = S.mkOsc r "TrigControl" [a'] 1
+instance Make TrigControl where
+  ugen = mkTrigControl
diff --git a/Sound/SC3/UGen/Record/TwoPole.hs b/Sound/SC3/UGen/Record/TwoPole.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/TwoPole.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.TwoPole where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data TwoPole = TwoPole {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen,
+  radius :: S.UGen
+  } deriving (Show)
+twoPole :: TwoPole
+twoPole = TwoPole {
+  rate = S.AR,
+  input = 0.0,
+  freq = 440.0,
+  radius = 0.8
+  }
+mkTwoPole :: TwoPole -> S.UGen
+mkTwoPole (TwoPole r a' b' c') = S.mkOsc r "TwoPole" [a',b',c'] 1
+instance Make TwoPole where
+  ugen = mkTwoPole
diff --git a/Sound/SC3/UGen/Record/TwoZero.hs b/Sound/SC3/UGen/Record/TwoZero.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/TwoZero.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.TwoZero where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data TwoZero = TwoZero {
+  rate :: S.Rate,
+  input :: S.UGen,
+  freq :: S.UGen,
+  radius :: S.UGen
+  } deriving (Show)
+twoZero :: TwoZero
+twoZero = TwoZero {
+  rate = S.AR,
+  input = 0.0,
+  freq = 440.0,
+  radius = 0.8
+  }
+mkTwoZero :: TwoZero -> S.UGen
+mkTwoZero (TwoZero r a' b' c') = S.mkOsc r "TwoZero" [a',b',c'] 1
+instance Make TwoZero where
+  ugen = mkTwoZero
diff --git a/Sound/SC3/UGen/Record/Unpack1FFT.hs b/Sound/SC3/UGen/Record/Unpack1FFT.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Unpack1FFT.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Unpack1FFT where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Unpack1FFT = Unpack1FFT {
+  chain :: S.UGen,
+  bufsize :: S.UGen,
+  binindex :: S.UGen,
+  whichmeasure :: S.UGen
+  } deriving (Show)
+unpack1FFT :: Unpack1FFT
+unpack1FFT = Unpack1FFT {
+  chain = 0.0,
+  bufsize = 0.0,
+  binindex = 0.0,
+  whichmeasure = 0.0
+  }
+mkUnpack1FFT :: Unpack1FFT -> S.UGen
+mkUnpack1FFT (Unpack1FFT  a' b' c' d') = S.mkOsc S.DR "Unpack1FFT" [a',b',c',d'] 1
+instance Make Unpack1FFT where
+  ugen = mkUnpack1FFT
diff --git a/Sound/SC3/UGen/Record/VDiskIn.hs b/Sound/SC3/UGen/Record/VDiskIn.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/VDiskIn.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.VDiskIn where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data VDiskIn = VDiskIn {
+  numChannels :: S.UGen,
+  bufnum :: S.UGen,
+  rate_ :: S.UGen,
+  loop :: S.UGen
+  } deriving (Show)
+vDiskIn :: VDiskIn
+vDiskIn = VDiskIn {
+  numChannels = 0.0,
+  bufnum = 0.0,
+  rate_ = 1.0,
+  loop = 0.0
+  }
+mkVDiskIn :: VDiskIn -> S.UGen
+mkVDiskIn (VDiskIn  a' b' c' d') = S.mkOsc S.AR "VDiskIn" [a',b',c',d'] 1
+instance Make VDiskIn where
+  ugen = mkVDiskIn
diff --git a/Sound/SC3/UGen/Record/VOsc.hs b/Sound/SC3/UGen/Record/VOsc.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/VOsc.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.VOsc where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data VOsc = VOsc {
+  rate :: S.Rate,
+  bufpos :: S.UGen,
+  freq :: S.UGen,
+  phase :: S.UGen
+  } deriving (Show)
+vOsc :: VOsc
+vOsc = VOsc {
+  rate = S.AR,
+  bufpos = 0.0,
+  freq = 440.0,
+  phase = 0.0
+  }
+mkVOsc :: VOsc -> S.UGen
+mkVOsc (VOsc r a' b' c') = S.mkOsc r "VOsc" [a',b',c'] 1
+instance Make VOsc where
+  ugen = mkVOsc
diff --git a/Sound/SC3/UGen/Record/VOsc3.hs b/Sound/SC3/UGen/Record/VOsc3.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/VOsc3.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.VOsc3 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data VOsc3 = VOsc3 {
+  rate :: S.Rate,
+  bufpos :: S.UGen,
+  freq1 :: S.UGen,
+  freq2 :: S.UGen,
+  freq3 :: S.UGen
+  } deriving (Show)
+vOsc3 :: VOsc3
+vOsc3 = VOsc3 {
+  rate = S.AR,
+  bufpos = 0.0,
+  freq1 = 110.0,
+  freq2 = 220.0,
+  freq3 = 440.0
+  }
+mkVOsc3 :: VOsc3 -> S.UGen
+mkVOsc3 (VOsc3 r a' b' c' d') = S.mkOsc r "VOsc3" [a',b',c',d'] 1
+instance Make VOsc3 where
+  ugen = mkVOsc3
diff --git a/Sound/SC3/UGen/Record/VarSaw.hs b/Sound/SC3/UGen/Record/VarSaw.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/VarSaw.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.VarSaw where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data VarSaw = VarSaw {
+  rate :: S.Rate,
+  freq :: S.UGen,
+  iphase :: S.UGen,
+  width :: S.UGen
+  } deriving (Show)
+varSaw :: VarSaw
+varSaw = VarSaw {
+  rate = S.AR,
+  freq = 440.0,
+  iphase = 0.0,
+  width = 0.5
+  }
+mkVarSaw :: VarSaw -> S.UGen
+mkVarSaw (VarSaw r a' b' c') = S.mkOsc r "VarSaw" [a',b',c'] 1
+instance Make VarSaw where
+  ugen = mkVarSaw
diff --git a/Sound/SC3/UGen/Record/Vibrato.hs b/Sound/SC3/UGen/Record/Vibrato.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Vibrato.hs
@@ -0,0 +1,30 @@
+module Sound.SC3.UGen.Record.Vibrato where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Vibrato = Vibrato {
+  rate :: S.Rate,
+  freq :: S.UGen,
+  rate_ :: S.UGen,
+  depth :: S.UGen,
+  delay :: S.UGen,
+  onset :: S.UGen,
+  rateVariation :: S.UGen,
+  depthVariation :: S.UGen,
+  iphase :: S.UGen
+  } deriving (Show)
+vibrato :: Vibrato
+vibrato = Vibrato {
+  rate = S.AR,
+  freq = 440.0,
+  rate_ = 6.0,
+  depth = 0.02,
+  delay = 0.0,
+  onset = 0.0,
+  rateVariation = 0.04,
+  depthVariation = 0.1,
+  iphase = 0.0
+  }
+mkVibrato :: Vibrato -> S.UGen
+mkVibrato (Vibrato r a' b' c' d' e' f' g' h') = S.mkOsc r "Vibrato" [a',b',c',d',e',f',g',h'] 1
+instance Make Vibrato where
+  ugen = mkVibrato
diff --git a/Sound/SC3/UGen/Record/Warp1.hs b/Sound/SC3/UGen/Record/Warp1.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Warp1.hs
@@ -0,0 +1,30 @@
+module Sound.SC3.UGen.Record.Warp1 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Warp1 = Warp1 {
+  numChannels :: S.UGen,
+  bufnum :: S.UGen,
+  pointer :: S.UGen,
+  freqScale :: S.UGen,
+  windowSize :: S.UGen,
+  envbufnum :: S.UGen,
+  overlaps :: S.UGen,
+  windowRandRatio :: S.UGen,
+  interp :: S.UGen
+  } deriving (Show)
+warp1 :: Warp1
+warp1 = Warp1 {
+  numChannels = 1.0,
+  bufnum = 0.0,
+  pointer = 0.0,
+  freqScale = 1.0,
+  windowSize = 0.2,
+  envbufnum = -1.0,
+  overlaps = 8.0,
+  windowRandRatio = 0.0,
+  interp = 1.0
+  }
+mkWarp1 :: Warp1 -> S.UGen
+mkWarp1 (Warp1  a' b' c' d' e' f' g' h' i') = S.mkOsc S.AR "Warp1" [a',b',c',d',e',f',g',h',i'] 1
+instance Make Warp1 where
+  ugen = mkWarp1
diff --git a/Sound/SC3/UGen/Record/Wrap.hs b/Sound/SC3/UGen/Record/Wrap.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/Wrap.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.Wrap where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data Wrap = Wrap {
+  rate :: S.Rate,
+  input :: S.UGen,
+  lo :: S.UGen,
+  hi :: S.UGen
+  } deriving (Show)
+wrap :: Wrap
+wrap = Wrap {
+  rate = S.AR,
+  input = 0.0,
+  lo = 0.0,
+  hi = 1.0
+  }
+mkWrap :: Wrap -> S.UGen
+mkWrap (Wrap r a' b' c') = S.mkOsc r "Wrap" [a',b',c'] 1
+instance Make Wrap where
+  ugen = mkWrap
diff --git a/Sound/SC3/UGen/Record/WrapIndex.hs b/Sound/SC3/UGen/Record/WrapIndex.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/WrapIndex.hs
@@ -0,0 +1,18 @@
+module Sound.SC3.UGen.Record.WrapIndex where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data WrapIndex = WrapIndex {
+  rate :: S.Rate,
+  bufnum :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+wrapIndex :: WrapIndex
+wrapIndex = WrapIndex {
+  rate = S.AR,
+  bufnum = 0.0,
+  input = 0.0
+  }
+mkWrapIndex :: WrapIndex -> S.UGen
+mkWrapIndex (WrapIndex r a' b') = S.mkOsc r "WrapIndex" [a',b'] 1
+instance Make WrapIndex where
+  ugen = mkWrapIndex
diff --git a/Sound/SC3/UGen/Record/XFade.hs b/Sound/SC3/UGen/Record/XFade.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/XFade.hs
@@ -0,0 +1,14 @@
+module Sound.SC3.UGen.Record.XFade where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data XFade = XFade {
+  maxSize :: S.UGen
+  } deriving (Show)
+xFade :: XFade
+xFade = XFade {
+  maxSize = 0.0
+  }
+mkXFade :: XFade -> S.UGen
+mkXFade (XFade  a') = S.mkOsc S.AR "XFade" [a'] 1
+instance Make XFade where
+  ugen = mkXFade
diff --git a/Sound/SC3/UGen/Record/XFade2.hs b/Sound/SC3/UGen/Record/XFade2.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/XFade2.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.XFade2 where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data XFade2 = XFade2 {
+  rate :: S.Rate,
+  inA :: S.UGen,
+  inB :: S.UGen,
+  pan :: S.UGen,
+  level :: S.UGen
+  } deriving (Show)
+xFade2 :: XFade2
+xFade2 = XFade2 {
+  rate = S.AR,
+  inA = 0.0,
+  inB = 0.0,
+  pan = 0.0,
+  level = 1.0
+  }
+mkXFade2 :: XFade2 -> S.UGen
+mkXFade2 (XFade2 r a' b' c' d') = S.mkOsc r "XFade2" [a',b',c',d'] 1
+instance Make XFade2 where
+  ugen = mkXFade2
diff --git a/Sound/SC3/UGen/Record/XLine.hs b/Sound/SC3/UGen/Record/XLine.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/XLine.hs
@@ -0,0 +1,22 @@
+module Sound.SC3.UGen.Record.XLine where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data XLine = XLine {
+  rate :: S.Rate,
+  start :: S.UGen,
+  end :: S.UGen,
+  dur :: S.UGen,
+  doneAction :: S.UGen
+  } deriving (Show)
+xLine :: XLine
+xLine = XLine {
+  rate = S.AR,
+  start = 1.0,
+  end = 2.0,
+  dur = 1.0,
+  doneAction = 0.0
+  }
+mkXLine :: XLine -> S.UGen
+mkXLine (XLine r a' b' c' d') = S.mkOsc r "XLine" [a',b',c',d'] 1
+instance Make XLine where
+  ugen = mkXLine
diff --git a/Sound/SC3/UGen/Record/XOut.hs b/Sound/SC3/UGen/Record/XOut.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/XOut.hs
@@ -0,0 +1,20 @@
+module Sound.SC3.UGen.Record.XOut where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data XOut = XOut {
+  rate :: S.Rate,
+  bus :: S.UGen,
+  xfade :: S.UGen,
+  input :: S.UGen
+  } deriving (Show)
+xOut :: XOut
+xOut = XOut {
+  rate = S.AR,
+  bus = 0.0,
+  xfade = 0.0,
+  input = 0.0
+  }
+mkXOut :: XOut -> S.UGen
+mkXOut (XOut r a' b' c') = S.mkOsc r "XOut" [a',b',c'] 1
+instance Make XOut where
+  ugen = mkXOut
diff --git a/Sound/SC3/UGen/Record/ZeroCrossing.hs b/Sound/SC3/UGen/Record/ZeroCrossing.hs
new file mode 100644
--- /dev/null
+++ b/Sound/SC3/UGen/Record/ZeroCrossing.hs
@@ -0,0 +1,16 @@
+module Sound.SC3.UGen.Record.ZeroCrossing where
+import qualified Sound.SC3.UGen as S
+import Sound.SC3.UGen.Record
+data ZeroCrossing = ZeroCrossing {
+  rate :: S.Rate,
+  input :: S.UGen
+  } deriving (Show)
+zeroCrossing :: ZeroCrossing
+zeroCrossing = ZeroCrossing {
+  rate = S.AR,
+  input = 0.0
+  }
+mkZeroCrossing :: ZeroCrossing -> S.UGen
+mkZeroCrossing (ZeroCrossing r a') = S.mkOsc r "ZeroCrossing" [a'] 1
+instance Make ZeroCrossing where
+  ugen = mkZeroCrossing
diff --git a/hsc3-rec.cabal b/hsc3-rec.cabal
new file mode 100644
--- /dev/null
+++ b/hsc3-rec.cabal
@@ -0,0 +1,388 @@
+Name:              hsc3-rec
+Version:           0.7
+Synopsis:          Haskell SuperCollider Record Variants
+Description:       hsc3-rsc provides record variants of the 
+                   unit generator constructors at hsc3.
+License:           GPL
+Category:          Sound
+Copyright:         (c) Rohan Drape and others, 2008
+Author:            Rohan Drape
+Maintainer:        rd@slavepianos.org
+Stability:         Experimental
+Homepage:          http://slavepianos.org/rd/f/197482/
+Tested-With:       GHC == 6.8.2
+Build-Type:        Simple
+Cabal-Version:     >= 1.6
+
+Data-files:        README
+                   Makefile
+                   Help/analog-bubbles.hs
+                   Help/pitch.hs
+
+Library
+  Build-Depends:   base == 3.*,
+                   hsc3 == 0.7
+  GHC-Options:     -Wall -fwarn-tabs
+  Exposed-modules: Sound.SC3.UGen.Record
+                   -- the lines below are generate by make module_list
+                   Sound.SC3.UGen.Record.A2K
+                   Sound.SC3.UGen.Record.AbstractIn
+                   Sound.SC3.UGen.Record.AbstractOut
+                   Sound.SC3.UGen.Record.AllpassC
+                   Sound.SC3.UGen.Record.AllpassL
+                   Sound.SC3.UGen.Record.AllpassN
+                   Sound.SC3.UGen.Record.AmpCompA
+                   Sound.SC3.UGen.Record.AmpComp
+                   Sound.SC3.UGen.Record.Amplitude
+                   Sound.SC3.UGen.Record.APF
+                   Sound.SC3.UGen.Record.Balance2
+                   Sound.SC3.UGen.Record.Ball
+                   Sound.SC3.UGen.Record.BAllPass
+                   Sound.SC3.UGen.Record.BasicOpUGen
+                   Sound.SC3.UGen.Record.BBandPass
+                   Sound.SC3.UGen.Record.BBandStop
+                   Sound.SC3.UGen.Record.BeatTrack2
+                   Sound.SC3.UGen.Record.BeatTrack
+                   Sound.SC3.UGen.Record.BEQSuite
+                   Sound.SC3.UGen.Record.BHiPass
+                   Sound.SC3.UGen.Record.BHiShelf
+                   Sound.SC3.UGen.Record.BiPanB2
+                   Sound.SC3.UGen.Record.Blip
+                   Sound.SC3.UGen.Record.BLowPass
+                   Sound.SC3.UGen.Record.BLowShelf
+                   Sound.SC3.UGen.Record.BPeakEQ
+                   Sound.SC3.UGen.Record.BPF
+                   Sound.SC3.UGen.Record.BPZ2
+                   Sound.SC3.UGen.Record.BRF
+                   Sound.SC3.UGen.Record.BRZ2
+                   Sound.SC3.UGen.Record.BufAllpassC
+                   Sound.SC3.UGen.Record.BufAllpassL
+                   Sound.SC3.UGen.Record.BufAllpassN
+                   Sound.SC3.UGen.Record.BufChannels
+                   Sound.SC3.UGen.Record.BufCombC
+                   Sound.SC3.UGen.Record.BufCombL
+                   Sound.SC3.UGen.Record.BufCombN
+                   Sound.SC3.UGen.Record.BufDelayC
+                   Sound.SC3.UGen.Record.BufDelayL
+                   Sound.SC3.UGen.Record.BufDelayN
+                   Sound.SC3.UGen.Record.BufDur
+                   Sound.SC3.UGen.Record.BufFrames
+                   Sound.SC3.UGen.Record.BufInfoUGenBase
+                   Sound.SC3.UGen.Record.BufRateScale
+                   Sound.SC3.UGen.Record.BufRd
+                   Sound.SC3.UGen.Record.BufSampleRate
+                   Sound.SC3.UGen.Record.BufSamples
+                   Sound.SC3.UGen.Record.BufWr
+                   Sound.SC3.UGen.Record.ChaosGen
+                   Sound.SC3.UGen.Record.CheckBadValues
+                   Sound.SC3.UGen.Record.ClearBuf
+                   Sound.SC3.UGen.Record.Clip
+                   Sound.SC3.UGen.Record.CoinGate
+                   Sound.SC3.UGen.Record.CombC
+                   Sound.SC3.UGen.Record.CombL
+                   Sound.SC3.UGen.Record.CombN
+                   Sound.SC3.UGen.Record.CompanderD
+                   Sound.SC3.UGen.Record.Compander
+                   Sound.SC3.UGen.Record.Control
+                   Sound.SC3.UGen.Record.Convolution2
+                   Sound.SC3.UGen.Record.Convolution2L
+                   Sound.SC3.UGen.Record.Convolution3
+                   Sound.SC3.UGen.Record.Convolution
+                   Sound.SC3.UGen.Record.COsc
+                   Sound.SC3.UGen.Record.Crackle
+                   Sound.SC3.UGen.Record.CuspL
+                   Sound.SC3.UGen.Record.CuspN
+                   Sound.SC3.UGen.Record.Dbrown
+                   Sound.SC3.UGen.Record.Dbufrd
+                   Sound.SC3.UGen.Record.Dbufwr
+                   Sound.SC3.UGen.Record.DC
+                   Sound.SC3.UGen.Record.Decay2
+                   Sound.SC3.UGen.Record.Decay
+                   Sound.SC3.UGen.Record.DecodeB2
+                   Sound.SC3.UGen.Record.DegreeToKey
+                   Sound.SC3.UGen.Record.Delay1
+                   Sound.SC3.UGen.Record.Delay2
+                   Sound.SC3.UGen.Record.DelayC
+                   Sound.SC3.UGen.Record.DelayL
+                   Sound.SC3.UGen.Record.DelayN
+                   Sound.SC3.UGen.Record.DemandEnvGen
+                   Sound.SC3.UGen.Record.Demand
+                   Sound.SC3.UGen.Record.DetectIndex
+                   Sound.SC3.UGen.Record.DetectSilence
+                   Sound.SC3.UGen.Record.Dgeom
+                   Sound.SC3.UGen.Record.Dibrown
+                   Sound.SC3.UGen.Record.DiskIn
+                   Sound.SC3.UGen.Record.DiskOut
+                   Sound.SC3.UGen.Record.Diwhite
+                   Sound.SC3.UGen.Record.Donce
+                   Sound.SC3.UGen.Record.Done
+                   Sound.SC3.UGen.Record.Dpoll
+                   Sound.SC3.UGen.Record.Drand
+                   Sound.SC3.UGen.Record.Dseq
+                   Sound.SC3.UGen.Record.Dser
+                   Sound.SC3.UGen.Record.Dseries
+                   Sound.SC3.UGen.Record.Dstutter
+                   Sound.SC3.UGen.Record.Dswitch1
+                   Sound.SC3.UGen.Record.Dswitch
+                   Sound.SC3.UGen.Record.DUGen
+                   Sound.SC3.UGen.Record.Dust2
+                   Sound.SC3.UGen.Record.Dust
+                   Sound.SC3.UGen.Record.Duty
+                   Sound.SC3.UGen.Record.Dwhite
+                   Sound.SC3.UGen.Record.Dxrand
+                   Sound.SC3.UGen.Record.DynKlang
+                   Sound.SC3.UGen.Record.DynKlank
+                   Sound.SC3.UGen.Record.EnvGen
+                   Sound.SC3.UGen.Record.ExpRand
+                   Sound.SC3.UGen.Record.FBSineC
+                   Sound.SC3.UGen.Record.FBSineL
+                   Sound.SC3.UGen.Record.FBSineN
+                   Sound.SC3.UGen.Record.FFT
+                   Sound.SC3.UGen.Record.FFTTrigger
+                   Sound.SC3.UGen.Record.Filter
+                   Sound.SC3.UGen.Record.Fold
+                   Sound.SC3.UGen.Record.Formant
+                   Sound.SC3.UGen.Record.Formlet
+                   Sound.SC3.UGen.Record.FOS
+                   Sound.SC3.UGen.Record.Free
+                   Sound.SC3.UGen.Record.FreeSelf
+                   Sound.SC3.UGen.Record.FreeSelfWhenDone
+                   Sound.SC3.UGen.Record.FreeVerb2
+                   Sound.SC3.UGen.Record.FreeVerb
+                   Sound.SC3.UGen.Record.FreqShift
+                   Sound.SC3.UGen.Record.FSinOsc
+                   Sound.SC3.UGen.Record.Gate
+                   Sound.SC3.UGen.Record.GbmanL
+                   Sound.SC3.UGen.Record.GbmanN
+                   Sound.SC3.UGen.Record.Gendy1
+                   Sound.SC3.UGen.Record.Gendy2
+                   Sound.SC3.UGen.Record.Gendy3
+                   Sound.SC3.UGen.Record.GrainBuf
+                   Sound.SC3.UGen.Record.GrainFM
+                   Sound.SC3.UGen.Record.GrainIn
+                   Sound.SC3.UGen.Record.GrainSin
+                   Sound.SC3.UGen.Record.GVerb
+                   Sound.SC3.UGen.Record.Hasher
+                   Sound.SC3.UGen.Record.HenonC
+                   Sound.SC3.UGen.Record.HenonL
+                   Sound.SC3.UGen.Record.HenonN
+                   Sound.SC3.UGen.Record.HilbertFIR
+                   Sound.SC3.UGen.Record.Hilbert
+                   Sound.SC3.UGen.Record.HPF
+                   Sound.SC3.UGen.Record.HPZ1
+                   Sound.SC3.UGen.Record.HPZ2
+                   Sound.SC3.UGen.Record.IEnvGen
+                   Sound.SC3.UGen.Record.IFFT
+                   Sound.SC3.UGen.Record.Impulse
+                   Sound.SC3.UGen.Record.Index
+                   Sound.SC3.UGen.Record.IndexInBetween
+                   Sound.SC3.UGen.Record.InFeedback
+                   Sound.SC3.UGen.Record.In
+                   Sound.SC3.UGen.Record.InRange
+                   Sound.SC3.UGen.Record.InRect
+                   Sound.SC3.UGen.Record.Integrator
+                   Sound.SC3.UGen.Record.InTrig
+                   Sound.SC3.UGen.Record.IRand
+                   Sound.SC3.UGen.Record.K2A
+                   Sound.SC3.UGen.Record.KeyState
+                   Sound.SC3.UGen.Record.KeyTrack
+                   Sound.SC3.UGen.Record.Klang
+                   Sound.SC3.UGen.Record.Klank
+                   Sound.SC3.UGen.Record.Lag2
+                   Sound.SC3.UGen.Record.Lag2UD
+                   Sound.SC3.UGen.Record.Lag3
+                   Sound.SC3.UGen.Record.Lag3UD
+                   Sound.SC3.UGen.Record.LagControl
+                   Sound.SC3.UGen.Record.Lag
+                   Sound.SC3.UGen.Record.LagIn
+                   Sound.SC3.UGen.Record.LagUD
+                   Sound.SC3.UGen.Record.LastValue
+                   Sound.SC3.UGen.Record.Latch
+                   Sound.SC3.UGen.Record.LatoocarfianC
+                   Sound.SC3.UGen.Record.LatoocarfianL
+                   Sound.SC3.UGen.Record.LatoocarfianN
+                   Sound.SC3.UGen.Record.LeakDC
+                   Sound.SC3.UGen.Record.LeastChange
+                   Sound.SC3.UGen.Record.LFClipNoise
+                   Sound.SC3.UGen.Record.LFCub
+                   Sound.SC3.UGen.Record.LFDClipNoise
+                   Sound.SC3.UGen.Record.LFDNoise0
+                   Sound.SC3.UGen.Record.LFDNoise1
+                   Sound.SC3.UGen.Record.LFDNoise3
+                   Sound.SC3.UGen.Record.LFNoise0
+                   Sound.SC3.UGen.Record.LFNoise1
+                   Sound.SC3.UGen.Record.LFNoise2
+                   Sound.SC3.UGen.Record.LFPar
+                   Sound.SC3.UGen.Record.LFPulse
+                   Sound.SC3.UGen.Record.LFSaw
+                   Sound.SC3.UGen.Record.LFTri
+                   Sound.SC3.UGen.Record.Limiter
+                   Sound.SC3.UGen.Record.LinCongC
+                   Sound.SC3.UGen.Record.LinCongL
+                   Sound.SC3.UGen.Record.LinCongN
+                   Sound.SC3.UGen.Record.Line
+                   Sound.SC3.UGen.Record.Linen
+                   Sound.SC3.UGen.Record.LinExp
+                   Sound.SC3.UGen.Record.LinLin
+                   Sound.SC3.UGen.Record.LinPan2
+                   Sound.SC3.UGen.Record.LinRand
+                   Sound.SC3.UGen.Record.LinXFade2
+                   Sound.SC3.UGen.Record.ListDUGen
+                   Sound.SC3.UGen.Record.LocalBuf
+                   Sound.SC3.UGen.Record.LocalIn
+                   Sound.SC3.UGen.Record.LocalOut
+                   Sound.SC3.UGen.Record.Logistic
+                   Sound.SC3.UGen.Record.LorenzL
+                   Sound.SC3.UGen.Record.Loudness
+                   Sound.SC3.UGen.Record.LPF
+                   Sound.SC3.UGen.Record.LPZ1
+                   Sound.SC3.UGen.Record.LPZ2
+                   Sound.SC3.UGen.Record.MantissaMask
+                   Sound.SC3.UGen.Record.Median
+                   Sound.SC3.UGen.Record.MFCC
+                   Sound.SC3.UGen.Record.MidEQ
+                   Sound.SC3.UGen.Record.MoogFF
+                   Sound.SC3.UGen.Record.MostChange
+                   Sound.SC3.UGen.Record.MouseButton
+                   Sound.SC3.UGen.Record.MouseX
+                   Sound.SC3.UGen.Record.MouseY
+                   Sound.SC3.UGen.Record.MultiOutUGen
+                   Sound.SC3.UGen.Record.Normalizer
+                   Sound.SC3.UGen.Record.NRand
+                   Sound.SC3.UGen.Record.OffsetOut
+                   Sound.SC3.UGen.Record.OnePole
+                   Sound.SC3.UGen.Record.OneZero
+                   Sound.SC3.UGen.Record.Onsets
+                   Sound.SC3.UGen.Record.Osc
+                   Sound.SC3.UGen.Record.OscN
+                   Sound.SC3.UGen.Record.Out
+                   Sound.SC3.UGen.Record.Pan2
+                   Sound.SC3.UGen.Record.Pan4
+                   Sound.SC3.UGen.Record.PanAz
+                   Sound.SC3.UGen.Record.PanB2
+                   Sound.SC3.UGen.Record.PanB
+                   Sound.SC3.UGen.Record.Panner
+                   Sound.SC3.UGen.Record.PartConv
+                   Sound.SC3.UGen.Record.Pause
+                   Sound.SC3.UGen.Record.PauseSelf
+                   Sound.SC3.UGen.Record.PauseSelfWhenDone
+                   Sound.SC3.UGen.Record.PeakFollower
+                   Sound.SC3.UGen.Record.Peak
+                   Sound.SC3.UGen.Record.Phasor
+                   Sound.SC3.UGen.Record.Pitch
+                   Sound.SC3.UGen.Record.PitchShift
+                   Sound.SC3.UGen.Record.PlayBuf
+                   Sound.SC3.UGen.Record.Pluck
+                   Sound.SC3.UGen.Record.PSinGrain
+                   Sound.SC3.UGen.Record.PulseCount
+                   Sound.SC3.UGen.Record.PulseDivider
+                   Sound.SC3.UGen.Record.Pulse
+                   Sound.SC3.UGen.Record.PV_Add
+                   Sound.SC3.UGen.Record.PV_BinScramble
+                   Sound.SC3.UGen.Record.PV_BinShift
+                   Sound.SC3.UGen.Record.PV_BinWipe
+                   Sound.SC3.UGen.Record.PV_BrickWall
+                   Sound.SC3.UGen.Record.PV_ChainUGen
+                   Sound.SC3.UGen.Record.PV_ConformalMap
+                   Sound.SC3.UGen.Record.PV_Copy
+                   Sound.SC3.UGen.Record.PV_CopyPhase
+                   Sound.SC3.UGen.Record.PV_Diffuser
+                   Sound.SC3.UGen.Record.PV_HainsworthFoote
+                   Sound.SC3.UGen.Record.PV_JensenAndersen
+                   Sound.SC3.UGen.Record.PV_LocalMax
+                   Sound.SC3.UGen.Record.PV_MagAbove
+                   Sound.SC3.UGen.Record.PV_MagBelow
+                   Sound.SC3.UGen.Record.PV_MagClip
+                   Sound.SC3.UGen.Record.PV_MagDiv
+                   Sound.SC3.UGen.Record.PV_MagFreeze
+                   Sound.SC3.UGen.Record.PV_MagMul
+                   Sound.SC3.UGen.Record.PV_MagNoise
+                   Sound.SC3.UGen.Record.PV_MagShift
+                   Sound.SC3.UGen.Record.PV_MagSmear
+                   Sound.SC3.UGen.Record.PV_MagSquared
+                   Sound.SC3.UGen.Record.PV_Max
+                   Sound.SC3.UGen.Record.PV_Min
+                   Sound.SC3.UGen.Record.PV_Mul
+                   Sound.SC3.UGen.Record.PV_PhaseShift270
+                   Sound.SC3.UGen.Record.PV_PhaseShift90
+                   Sound.SC3.UGen.Record.PV_PhaseShift
+                   Sound.SC3.UGen.Record.PV_RandComb
+                   Sound.SC3.UGen.Record.PV_RandWipe
+                   Sound.SC3.UGen.Record.PV_RectComb2
+                   Sound.SC3.UGen.Record.PV_RectComb
+                   Sound.SC3.UGen.Record.QuadC
+                   Sound.SC3.UGen.Record.QuadL
+                   Sound.SC3.UGen.Record.QuadN
+                   Sound.SC3.UGen.Record.Ramp
+                   Sound.SC3.UGen.Record.Rand
+                   Sound.SC3.UGen.Record.RandID
+                   Sound.SC3.UGen.Record.RandSeed
+                   Sound.SC3.UGen.Record.RecordBuf
+                   Sound.SC3.UGen.Record.ReplaceOut
+                   Sound.SC3.UGen.Record.Resonz
+                   Sound.SC3.UGen.Record.RHPF
+                   Sound.SC3.UGen.Record.Ringz
+                   Sound.SC3.UGen.Record.RLPF
+                   Sound.SC3.UGen.Record.Rotate2
+                   Sound.SC3.UGen.Record.RunningMax
+                   Sound.SC3.UGen.Record.RunningMin
+                   Sound.SC3.UGen.Record.RunningSum
+                   Sound.SC3.UGen.Record.Saw
+                   Sound.SC3.UGen.Record.Schmidt
+                   Sound.SC3.UGen.Record.ScopeOut
+                   Sound.SC3.UGen.Record.Select
+                   Sound.SC3.UGen.Record.SendTrig
+                   Sound.SC3.UGen.Record.SetBuf
+                   Sound.SC3.UGen.Record.SetResetFF
+                   Sound.SC3.UGen.Record.Shaper
+                   Sound.SC3.UGen.Record.SharedIn
+                   Sound.SC3.UGen.Record.SharedOut
+                   Sound.SC3.UGen.Record.Silent
+                   Sound.SC3.UGen.Record.SinOscFB
+                   Sound.SC3.UGen.Record.SinOsc
+                   Sound.SC3.UGen.Record.Slew
+                   Sound.SC3.UGen.Record.Slope
+                   Sound.SC3.UGen.Record.SOS
+                   Sound.SC3.UGen.Record.SpecCentroid
+                   Sound.SC3.UGen.Record.SpecFlatness
+                   Sound.SC3.UGen.Record.SpecPcile
+                   Sound.SC3.UGen.Record.Spring
+                   Sound.SC3.UGen.Record.StandardL
+                   Sound.SC3.UGen.Record.StandardN
+                   Sound.SC3.UGen.Record.Stepper
+                   Sound.SC3.UGen.Record.StereoConvolution2L
+                   Sound.SC3.UGen.Record.Sweep
+                   Sound.SC3.UGen.Record.SyncSaw
+                   Sound.SC3.UGen.Record.T2A
+                   Sound.SC3.UGen.Record.T2K
+                   Sound.SC3.UGen.Record.Tap
+                   Sound.SC3.UGen.Record.TBall
+                   Sound.SC3.UGen.Record.TDelay
+                   Sound.SC3.UGen.Record.TDuty
+                   Sound.SC3.UGen.Record.TExpRand
+                   Sound.SC3.UGen.Record.TGrains
+                   Sound.SC3.UGen.Record.Timer
+                   Sound.SC3.UGen.Record.TIRand
+                   Sound.SC3.UGen.Record.ToggleFF
+                   Sound.SC3.UGen.Record.TRand
+                   Sound.SC3.UGen.Record.Trig1
+                   Sound.SC3.UGen.Record.TrigControl
+                   Sound.SC3.UGen.Record.Trig
+                   Sound.SC3.UGen.Record.TWChoose
+                   Sound.SC3.UGen.Record.TWindex
+                   Sound.SC3.UGen.Record.TwoPole
+                   Sound.SC3.UGen.Record.TwoZero
+                   Sound.SC3.UGen.Record.Unpack1FFT
+                   Sound.SC3.UGen.Record.VarSaw
+                   Sound.SC3.UGen.Record.VDiskIn
+                   Sound.SC3.UGen.Record.Vibrato
+                   Sound.SC3.UGen.Record.VOsc3
+                   Sound.SC3.UGen.Record.VOsc
+                   Sound.SC3.UGen.Record.Warp1
+                   Sound.SC3.UGen.Record.Wrap
+                   Sound.SC3.UGen.Record.WrapIndex
+                   Sound.SC3.UGen.Record.XFade2
+                   Sound.SC3.UGen.Record.XFade
+                   Sound.SC3.UGen.Record.XLine
+                   Sound.SC3.UGen.Record.XOut
+                   Sound.SC3.UGen.Record.ZeroCrossing
