packages feed

hsc3-rec 0.8 → 0.9

raw patch · 30 files changed

+365/−47 lines, 30 filesdep ~hsc3setup-changedPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: hsc3

API changes (from Hackage documentation)

- Sound.SC3.UGen.Record.Peak: reset :: Peak -> UGen
- Sound.SC3.UGen.Record.RunningMax: reset :: RunningMax -> UGen
- Sound.SC3.UGen.Record.RunningMin: reset :: RunningMin -> UGen
+ Sound.SC3.UGen.Record.Blip: rate :: Blip -> Rate
+ Sound.SC3.UGen.Record.Changed: Changed :: Rate -> UGen -> UGen -> Changed
+ Sound.SC3.UGen.Record.Changed: changed :: Changed
+ Sound.SC3.UGen.Record.Changed: data Changed
+ Sound.SC3.UGen.Record.Changed: input :: Changed -> UGen
+ Sound.SC3.UGen.Record.Changed: instance Make Changed
+ Sound.SC3.UGen.Record.Changed: instance Show Changed
+ Sound.SC3.UGen.Record.Changed: mkChanged :: Changed -> UGen
+ Sound.SC3.UGen.Record.Changed: rate :: Changed -> Rate
+ Sound.SC3.UGen.Record.Changed: threshold :: Changed -> UGen
+ Sound.SC3.UGen.Record.DelTapRd: DelTapRd :: Rate -> UGen -> UGen -> UGen -> UGen -> DelTapRd
+ Sound.SC3.UGen.Record.DelTapRd: buffer :: DelTapRd -> UGen
+ Sound.SC3.UGen.Record.DelTapRd: data DelTapRd
+ Sound.SC3.UGen.Record.DelTapRd: delTapRd :: DelTapRd
+ Sound.SC3.UGen.Record.DelTapRd: delTime :: DelTapRd -> UGen
+ Sound.SC3.UGen.Record.DelTapRd: instance Make DelTapRd
+ Sound.SC3.UGen.Record.DelTapRd: instance Show DelTapRd
+ Sound.SC3.UGen.Record.DelTapRd: interp :: DelTapRd -> UGen
+ Sound.SC3.UGen.Record.DelTapRd: mkDelTapRd :: DelTapRd -> UGen
+ Sound.SC3.UGen.Record.DelTapRd: phase :: DelTapRd -> UGen
+ Sound.SC3.UGen.Record.DelTapRd: rate :: DelTapRd -> Rate
+ Sound.SC3.UGen.Record.DelTapWr: DelTapWr :: Rate -> UGen -> UGen -> DelTapWr
+ Sound.SC3.UGen.Record.DelTapWr: buffer :: DelTapWr -> UGen
+ Sound.SC3.UGen.Record.DelTapWr: data DelTapWr
+ Sound.SC3.UGen.Record.DelTapWr: delTapWr :: DelTapWr
+ Sound.SC3.UGen.Record.DelTapWr: input :: DelTapWr -> UGen
+ Sound.SC3.UGen.Record.DelTapWr: instance Make DelTapWr
+ Sound.SC3.UGen.Record.DelTapWr: instance Show DelTapWr
+ Sound.SC3.UGen.Record.DelTapWr: mkDelTapWr :: DelTapWr -> UGen
+ Sound.SC3.UGen.Record.DelTapWr: rate :: DelTapWr -> Rate
+ Sound.SC3.UGen.Record.Dreset: Dreset :: UGen -> UGen -> Dreset
+ Sound.SC3.UGen.Record.Dreset: data Dreset
+ Sound.SC3.UGen.Record.Dreset: dreset :: Dreset
+ Sound.SC3.UGen.Record.Dreset: input :: Dreset -> UGen
+ Sound.SC3.UGen.Record.Dreset: instance Make Dreset
+ Sound.SC3.UGen.Record.Dreset: instance Show Dreset
+ Sound.SC3.UGen.Record.Dreset: mkDreset :: Dreset -> UGen
+ Sound.SC3.UGen.Record.Dreset: reset :: Dreset -> UGen
+ Sound.SC3.UGen.Record.Dunique: Dunique :: UGen -> Dunique
+ Sound.SC3.UGen.Record.Dunique: data Dunique
+ Sound.SC3.UGen.Record.Dunique: dunique :: Dunique
+ Sound.SC3.UGen.Record.Dunique: instance Make Dunique
+ Sound.SC3.UGen.Record.Dunique: instance Show Dunique
+ Sound.SC3.UGen.Record.Dunique: mkDunique :: Dunique -> UGen
+ Sound.SC3.UGen.Record.Dunique: source :: Dunique -> UGen
+ Sound.SC3.UGen.Record.Dwrand: Dwrand :: UGen -> UGen -> UGen -> Dwrand
+ Sound.SC3.UGen.Record.Dwrand: data Dwrand
+ Sound.SC3.UGen.Record.Dwrand: dwrand :: Dwrand
+ Sound.SC3.UGen.Record.Dwrand: instance Make Dwrand
+ Sound.SC3.UGen.Record.Dwrand: instance Show Dwrand
+ Sound.SC3.UGen.Record.Dwrand: list :: Dwrand -> UGen
+ Sound.SC3.UGen.Record.Dwrand: mkDwrand :: Dwrand -> UGen
+ Sound.SC3.UGen.Record.Dwrand: repeats :: Dwrand -> UGen
+ Sound.SC3.UGen.Record.Dwrand: weights :: Dwrand -> UGen
+ Sound.SC3.UGen.Record.DynKlang: rate :: DynKlang -> Rate
+ Sound.SC3.UGen.Record.DynKlank: rate :: DynKlank -> Rate
+ Sound.SC3.UGen.Record.GrainBuf: maxGrains :: GrainBuf -> UGen
+ Sound.SC3.UGen.Record.GrainFM: maxGrains :: GrainFM -> UGen
+ Sound.SC3.UGen.Record.GrainIn: maxGrains :: GrainIn -> UGen
+ Sound.SC3.UGen.Record.GrainSin: maxGrains :: GrainSin -> UGen
+ Sound.SC3.UGen.Record.IndexL: IndexL :: Rate -> UGen -> UGen -> IndexL
+ Sound.SC3.UGen.Record.IndexL: bufnum :: IndexL -> UGen
+ Sound.SC3.UGen.Record.IndexL: data IndexL
+ Sound.SC3.UGen.Record.IndexL: indexL :: IndexL
+ Sound.SC3.UGen.Record.IndexL: input :: IndexL -> UGen
+ Sound.SC3.UGen.Record.IndexL: instance Make IndexL
+ Sound.SC3.UGen.Record.IndexL: instance Show IndexL
+ Sound.SC3.UGen.Record.IndexL: mkIndexL :: IndexL -> UGen
+ Sound.SC3.UGen.Record.IndexL: rate :: IndexL -> Rate
+ Sound.SC3.UGen.Record.LocalIn: default_ :: LocalIn -> UGen
+ Sound.SC3.UGen.Record.Peak: input :: Peak -> UGen
+ Sound.SC3.UGen.Record.Pitch: clar :: Pitch -> UGen
+ Sound.SC3.UGen.Record.Pulse: rate :: Pulse -> Rate
+ Sound.SC3.UGen.Record.RunningMax: input :: RunningMax -> UGen
+ Sound.SC3.UGen.Record.RunningMin: input :: RunningMin -> UGen
+ Sound.SC3.UGen.Record.Saw: rate :: Saw -> Rate
- Sound.SC3.UGen.Record.Blip: Blip :: UGen -> UGen -> Blip
+ Sound.SC3.UGen.Record.Blip: Blip :: Rate -> UGen -> UGen -> Blip
- Sound.SC3.UGen.Record.DynKlang: DynKlang :: UGen -> UGen -> UGen -> DynKlang
+ Sound.SC3.UGen.Record.DynKlang: DynKlang :: Rate -> UGen -> UGen -> UGen -> DynKlang
- Sound.SC3.UGen.Record.DynKlank: DynKlank :: UGen -> UGen -> UGen -> UGen -> UGen -> DynKlank
+ Sound.SC3.UGen.Record.DynKlank: DynKlank :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen -> DynKlank
- Sound.SC3.UGen.Record.GrainBuf: GrainBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> GrainBuf
+ Sound.SC3.UGen.Record.GrainBuf: GrainBuf :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> GrainBuf
- Sound.SC3.UGen.Record.GrainFM: GrainFM :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> GrainFM
+ Sound.SC3.UGen.Record.GrainFM: GrainFM :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> GrainFM
- Sound.SC3.UGen.Record.GrainIn: GrainIn :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> GrainIn
+ Sound.SC3.UGen.Record.GrainIn: GrainIn :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> GrainIn
- Sound.SC3.UGen.Record.GrainSin: GrainSin :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> GrainSin
+ Sound.SC3.UGen.Record.GrainSin: GrainSin :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> GrainSin
- Sound.SC3.UGen.Record.LocalIn: LocalIn :: Rate -> UGen -> LocalIn
+ Sound.SC3.UGen.Record.LocalIn: LocalIn :: Rate -> UGen -> UGen -> LocalIn
- Sound.SC3.UGen.Record.Pitch: Pitch :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> Pitch
+ Sound.SC3.UGen.Record.Pitch: Pitch :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> Pitch
- Sound.SC3.UGen.Record.Pulse: Pulse :: UGen -> UGen -> Pulse
+ Sound.SC3.UGen.Record.Pulse: Pulse :: Rate -> UGen -> UGen -> Pulse
- Sound.SC3.UGen.Record.Saw: Saw :: UGen -> Saw
+ Sound.SC3.UGen.Record.Saw: Saw :: Rate -> UGen -> Saw

Files

README view
@@ -17,5 +17,5 @@ analog-bubbles.hs, where explicit bus numbering is required. -(c) rohan drape and others, 2008-2010+(c) rohan drape and others, 2008-2011     gpl, http://gnu.org/copyleft/
+ Setup.hs view
@@ -0,0 +1,3 @@+#!/usr/bin/env runhaskell+import Distribution.Simple+main = defaultMain
− Setup.lhs
@@ -1,3 +0,0 @@-#!/usr/bin/env runhaskell-> import Distribution.Simple-> main = defaultMain
Sound/SC3/UGen/Record/Blip.hs view
@@ -2,15 +2,17 @@ import qualified Sound.SC3.UGen as S import Sound.SC3.UGen.Record data Blip = Blip {+  rate :: S.Rate,   freq :: S.UGen,   numharm :: S.UGen   } deriving (Show) blip :: Blip blip = Blip {+  rate = S.AR,   freq = 440.0,   numharm = 200.0   } mkBlip :: Blip -> S.UGen-mkBlip (Blip  a' b') = S.mkOsc S.AR "Blip" [a',b'] 1+mkBlip (Blip r a' b') = S.mkOsc r "Blip" [a',b'] 1 instance Make Blip where   ugen = mkBlip
+ Sound/SC3/UGen/Record/Changed.hs view
@@ -0,0 +1,18 @@+module Sound.SC3.UGen.Record.Changed where+import qualified Sound.SC3.UGen as S+import Sound.SC3.UGen.Record+data Changed = Changed {+  rate :: S.Rate,+  input :: S.UGen,+  threshold :: S.UGen+  } deriving (Show)+changed :: Changed+changed = Changed {+  rate = S.AR,+  input = 0.0,+  threshold = 0.0+  }+mkChanged :: Changed -> S.UGen+mkChanged (Changed r a' b') = S.mkOsc r "Changed" [a',b'] 1+instance Make Changed where+  ugen = mkChanged
Sound/SC3/UGen/Record/Convolution2.hs view
@@ -12,7 +12,7 @@   input = 0.0,   kernel = 0.0,   trigger = 0.0,-  framesize = 0.0+  framesize = 2048.0   } mkConvolution2 :: Convolution2 -> S.UGen mkConvolution2 (Convolution2  a' b' c' d') = S.mkOsc S.AR "Convolution2" [a',b',c',d'] 1
Sound/SC3/UGen/Record/Convolution2L.hs view
@@ -13,7 +13,7 @@   input = 0.0,   kernel = 0.0,   trigger = 0.0,-  framesize = 0.0,+  framesize = 2048.0,   crossfade = 1.0   } mkConvolution2L :: Convolution2L -> S.UGen
Sound/SC3/UGen/Record/Convolution3.hs view
@@ -14,7 +14,7 @@   input = 0.0,   kernel = 0.0,   trigger = 0.0,-  framesize = 0.0+  framesize = 2048.0   } mkConvolution3 :: Convolution3 -> S.UGen mkConvolution3 (Convolution3 r a' b' c' d') = S.mkOsc r "Convolution3" [a',b',c',d'] 1
+ Sound/SC3/UGen/Record/DelTapRd.hs view
@@ -0,0 +1,22 @@+module Sound.SC3.UGen.Record.DelTapRd where+import qualified Sound.SC3.UGen as S+import Sound.SC3.UGen.Record+data DelTapRd = DelTapRd {+  rate :: S.Rate,+  buffer :: S.UGen,+  phase :: S.UGen,+  delTime :: S.UGen,+  interp :: S.UGen+  } deriving (Show)+delTapRd :: DelTapRd+delTapRd = DelTapRd {+  rate = S.AR,+  buffer = 0.0,+  phase = 0.0,+  delTime = 0.0,+  interp = 1.0+  }+mkDelTapRd :: DelTapRd -> S.UGen+mkDelTapRd (DelTapRd r a' b' c' d') = S.mkOsc r "DelTapRd" [a',b',c',d'] 1+instance Make DelTapRd where+  ugen = mkDelTapRd
+ Sound/SC3/UGen/Record/DelTapWr.hs view
@@ -0,0 +1,18 @@+module Sound.SC3.UGen.Record.DelTapWr where+import qualified Sound.SC3.UGen as S+import Sound.SC3.UGen.Record+data DelTapWr = DelTapWr {+  rate :: S.Rate,+  buffer :: S.UGen,+  input :: S.UGen+  } deriving (Show)+delTapWr :: DelTapWr+delTapWr = DelTapWr {+  rate = S.AR,+  buffer = 0.0,+  input = 0.0+  }+mkDelTapWr :: DelTapWr -> S.UGen+mkDelTapWr (DelTapWr r a' b') = S.mkOsc r "DelTapWr" [a',b'] 1+instance Make DelTapWr where+  ugen = mkDelTapWr
+ Sound/SC3/UGen/Record/Dreset.hs view
@@ -0,0 +1,16 @@+module Sound.SC3.UGen.Record.Dreset where+import qualified Sound.SC3.UGen as S+import Sound.SC3.UGen.Record+data Dreset = Dreset {+  input :: S.UGen,+  reset :: S.UGen+  } deriving (Show)+dreset :: Dreset+dreset = Dreset {+  input = 0.0,+  reset = 0.0+  }+mkDreset :: Dreset -> S.UGen+mkDreset (Dreset  a' b') = S.mkOsc S.DR "Dreset" [a',b'] 1+instance Make Dreset where+  ugen = mkDreset
+ Sound/SC3/UGen/Record/Dunique.hs view
@@ -0,0 +1,14 @@+module Sound.SC3.UGen.Record.Dunique where+import qualified Sound.SC3.UGen as S+import Sound.SC3.UGen.Record+data Dunique = Dunique {+  source :: S.UGen+  } deriving (Show)+dunique :: Dunique+dunique = Dunique {+  source = 0.0+  }+mkDunique :: Dunique -> S.UGen+mkDunique (Dunique  a') = S.mkOsc S.AR "Dunique" [a'] 1+instance Make Dunique where+  ugen = mkDunique
+ Sound/SC3/UGen/Record/Dwrand.hs view
@@ -0,0 +1,18 @@+module Sound.SC3.UGen.Record.Dwrand where+import qualified Sound.SC3.UGen as S+import Sound.SC3.UGen.Record+data Dwrand = Dwrand {+  list :: S.UGen,+  weights :: S.UGen,+  repeats :: S.UGen+  } deriving (Show)+dwrand :: Dwrand+dwrand = Dwrand {+  list = 0.0,+  weights = 0.0,+  repeats = 1.0+  }+mkDwrand :: Dwrand -> S.UGen+mkDwrand (Dwrand  a' b' c') = S.mkOsc S.DR "Dwrand" [a',b',c'] 1+instance Make Dwrand where+  ugen = mkDwrand
Sound/SC3/UGen/Record/DynKlang.hs view
@@ -2,17 +2,19 @@ import qualified Sound.SC3.UGen as S import Sound.SC3.UGen.Record data DynKlang = DynKlang {+  rate :: S.Rate,   specificationsArrayRef :: S.UGen,   freqscale :: S.UGen,   freqoffset :: S.UGen   } deriving (Show) dynKlang :: DynKlang dynKlang = DynKlang {+  rate = S.AR,   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+mkDynKlang (DynKlang r a' b' c') = S.mkOsc r "DynKlang" [a',b',c'] 1 instance Make DynKlang where   ugen = mkDynKlang
Sound/SC3/UGen/Record/DynKlank.hs view
@@ -2,6 +2,7 @@ import qualified Sound.SC3.UGen as S import Sound.SC3.UGen.Record data DynKlank = DynKlank {+  rate :: S.Rate,   specificationsArrayRef :: S.UGen,   input :: S.UGen,   freqscale :: S.UGen,@@ -10,6 +11,7 @@   } deriving (Show) dynKlank :: DynKlank dynKlank = DynKlank {+  rate = S.AR,   specificationsArrayRef = 0.0,   input = 0.0,   freqscale = 1.0,@@ -17,6 +19,6 @@   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+mkDynKlank (DynKlank r a' b' c' d' e') = S.mkOsc r "DynKlank" [a',b',c',d',e'] 1 instance Make DynKlank where   ugen = mkDynKlank
Sound/SC3/UGen/Record/GrainBuf.hs view
@@ -10,7 +10,8 @@   pos :: S.UGen,   interp :: S.UGen,   pan :: S.UGen,-  envbufnum :: S.UGen+  envbufnum :: S.UGen,+  maxGrains :: S.UGen   } deriving (Show) grainBuf :: GrainBuf grainBuf = GrainBuf {@@ -22,9 +23,10 @@   pos = 0.0,   interp = 2.0,   pan = 0.0,-  envbufnum = -1.0+  envbufnum = -1.0,+  maxGrains = 512.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+mkGrainBuf (GrainBuf  a' b' c' d' e' f' g' h' i' j') = S.mkOsc S.AR "GrainBuf" [a',b',c',d',e',f',g',h',i',j'] 1 instance Make GrainBuf where   ugen = mkGrainBuf
Sound/SC3/UGen/Record/GrainFM.hs view
@@ -9,7 +9,8 @@   modfreq :: S.UGen,   index :: S.UGen,   pan :: S.UGen,-  envbufnum :: S.UGen+  envbufnum :: S.UGen,+  maxGrains :: S.UGen   } deriving (Show) grainFM :: GrainFM grainFM = GrainFM {@@ -20,9 +21,10 @@   modfreq = 200.0,   index = 1.0,   pan = 0.0,-  envbufnum = -1.0+  envbufnum = -1.0,+  maxGrains = 512.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+mkGrainFM (GrainFM  a' b' c' d' e' f' g' h' i') = S.mkOsc S.AR "GrainFM" [a',b',c',d',e',f',g',h',i'] 1 instance Make GrainFM where   ugen = mkGrainFM
Sound/SC3/UGen/Record/GrainIn.hs view
@@ -7,7 +7,8 @@   dur :: S.UGen,   input :: S.UGen,   pan :: S.UGen,-  envbufnum :: S.UGen+  envbufnum :: S.UGen,+  maxGrains :: S.UGen   } deriving (Show) grainIn :: GrainIn grainIn = GrainIn {@@ -16,9 +17,10 @@   dur = 1.0,   input = 0.0,   pan = 0.0,-  envbufnum = -1.0+  envbufnum = -1.0,+  maxGrains = 512.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+mkGrainIn (GrainIn  a' b' c' d' e' f' g') = S.mkOsc S.AR "GrainIn" [a',b',c',d',e',f',g'] 1 instance Make GrainIn where   ugen = mkGrainIn
Sound/SC3/UGen/Record/GrainSin.hs view
@@ -7,7 +7,8 @@   dur :: S.UGen,   freq :: S.UGen,   pan :: S.UGen,-  envbufnum :: S.UGen+  envbufnum :: S.UGen,+  maxGrains :: S.UGen   } deriving (Show) grainSin :: GrainSin grainSin = GrainSin {@@ -16,9 +17,10 @@   dur = 1.0,   freq = 440.0,   pan = 0.0,-  envbufnum = -1.0+  envbufnum = -1.0,+  maxGrains = 512.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+mkGrainSin (GrainSin  a' b' c' d' e' f' g') = S.mkOsc S.AR "GrainSin" [a',b',c',d',e',f',g'] 1 instance Make GrainSin where   ugen = mkGrainSin
+ Sound/SC3/UGen/Record/IndexL.hs view
@@ -0,0 +1,18 @@+module Sound.SC3.UGen.Record.IndexL where+import qualified Sound.SC3.UGen as S+import Sound.SC3.UGen.Record+data IndexL = IndexL {+  rate :: S.Rate,+  bufnum :: S.UGen,+  input :: S.UGen+  } deriving (Show)+indexL :: IndexL+indexL = IndexL {+  rate = S.AR,+  bufnum = 0.0,+  input = 0.0+  }+mkIndexL :: IndexL -> S.UGen+mkIndexL (IndexL r a' b') = S.mkOsc r "IndexL" [a',b'] 1+instance Make IndexL where+  ugen = mkIndexL
Sound/SC3/UGen/Record/LocalIn.hs view
@@ -3,14 +3,16 @@ import Sound.SC3.UGen.Record data LocalIn = LocalIn {   rate :: S.Rate,-  numChannels :: S.UGen+  numChannels :: S.UGen,+  default_ :: S.UGen   } deriving (Show) localIn :: LocalIn localIn = LocalIn {   rate = S.AR,-  numChannels = 1.0+  numChannels = 1.0,+  default_ = 0.0   } mkLocalIn :: LocalIn -> S.UGen-mkLocalIn (LocalIn r a') = S.mkOsc r "LocalIn" [a'] 1+mkLocalIn (LocalIn r a' b') = S.mkOsc r "LocalIn" [a',b'] 1 instance Make LocalIn where   ugen = mkLocalIn
Sound/SC3/UGen/Record/Peak.hs view
@@ -3,14 +3,14 @@ import Sound.SC3.UGen.Record data Peak = Peak {   rate :: S.Rate,-  trig :: S.UGen,-  reset :: S.UGen+  input :: S.UGen,+  trig :: S.UGen   } deriving (Show) peak :: Peak peak = Peak {   rate = S.AR,-  trig = 0.0,-  reset = 0.0+  input = 0.0,+  trig = 0.0   } mkPeak :: Peak -> S.UGen mkPeak (Peak r a' b') = S.mkOsc r "Peak" [a',b'] 1
Sound/SC3/UGen/Record/Pitch.hs view
@@ -11,7 +11,8 @@   median :: S.UGen,   ampThreshold :: S.UGen,   peakThreshold :: S.UGen,-  downSample :: S.UGen+  downSample :: S.UGen,+  clar :: S.UGen   } deriving (Show) pitch :: Pitch pitch = Pitch {@@ -24,9 +25,10 @@   median = 1.0,   ampThreshold = 0.01,   peakThreshold = 0.5,-  downSample = 1.0+  downSample = 1.0,+  clar = 0.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+mkPitch (Pitch  a' b' c' d' e' f' g' h' i' j' k') = S.mkOsc S.KR "Pitch" [a',b',c',d',e',f',g',h',i',j',k'] 2 instance Make Pitch where   ugen = mkPitch
Sound/SC3/UGen/Record/Pulse.hs view
@@ -2,15 +2,17 @@ import qualified Sound.SC3.UGen as S import Sound.SC3.UGen.Record data Pulse = Pulse {+  rate :: S.Rate,   freq :: S.UGen,   width :: S.UGen   } deriving (Show) pulse :: Pulse pulse = Pulse {+  rate = S.AR,   freq = 440.0,   width = 0.5   } mkPulse :: Pulse -> S.UGen-mkPulse (Pulse  a' b') = S.mkOsc S.AR "Pulse" [a',b'] 1+mkPulse (Pulse r a' b') = S.mkOsc r "Pulse" [a',b'] 1 instance Make Pulse where   ugen = mkPulse
Sound/SC3/UGen/Record/RunningMax.hs view
@@ -3,14 +3,14 @@ import Sound.SC3.UGen.Record data RunningMax = RunningMax {   rate :: S.Rate,-  trig :: S.UGen,-  reset :: S.UGen+  input :: S.UGen,+  trig :: S.UGen   } deriving (Show) runningMax :: RunningMax runningMax = RunningMax {   rate = S.AR,-  trig = 0.0,-  reset = 0.0+  input = 0.0,+  trig = 0.0   } mkRunningMax :: RunningMax -> S.UGen mkRunningMax (RunningMax r a' b') = S.mkOsc r "RunningMax" [a',b'] 1
Sound/SC3/UGen/Record/RunningMin.hs view
@@ -3,14 +3,14 @@ import Sound.SC3.UGen.Record data RunningMin = RunningMin {   rate :: S.Rate,-  trig :: S.UGen,-  reset :: S.UGen+  input :: S.UGen,+  trig :: S.UGen   } deriving (Show) runningMin :: RunningMin runningMin = RunningMin {   rate = S.AR,-  trig = 0.0,-  reset = 0.0+  input = 0.0,+  trig = 0.0   } mkRunningMin :: RunningMin -> S.UGen mkRunningMin (RunningMin r a' b') = S.mkOsc r "RunningMin" [a',b'] 1
Sound/SC3/UGen/Record/Saw.hs view
@@ -2,13 +2,15 @@ import qualified Sound.SC3.UGen as S import Sound.SC3.UGen.Record data Saw = Saw {+  rate :: S.Rate,   freq :: S.UGen   } deriving (Show) saw :: Saw saw = Saw {+  rate = S.AR,   freq = 440.0   } mkSaw :: Saw -> S.UGen-mkSaw (Saw  a') = S.mkOsc S.AR "Saw" [a'] 1+mkSaw (Saw r a') = S.mkOsc r "Saw" [a'] 1 instance Make Saw where   ugen = mkSaw
Sound/SC3/UGen/Record/StereoConvolution2L.hs view
@@ -15,7 +15,7 @@   kernelL = 0.0,   kernelR = 0.0,   trigger = 0.0,-  framesize = 0.0,+  framesize = 2048.0,   crossfade = 1.0   } mkStereoConvolution2L :: StereoConvolution2L -> S.UGen
hsc3-rec.cabal view
@@ -1,27 +1,28 @@ Name:              hsc3-rec-Version:           0.8+Version:           0.9 Synopsis:          Haskell SuperCollider Record Variants Description:       hsc3-rec provides record variants of the                    unit generator constructors at hsc3. License:           GPL Category:          Sound-Copyright:         (c) Rohan Drape and others, 2008-2010+Copyright:         (c) Rohan Drape and others, 2008-2011 Author:            Rohan Drape Maintainer:        rd@slavepianos.org Stability:         Experimental Homepage:          http://slavepianos.org/rd/?t=hsc3-rec-Tested-With:       GHC == 6.10.3+Tested-With:       GHC == 6.12.1 Build-Type:        Simple Cabal-Version:     >= 1.6  Data-files:        README                    Makefile+                   mk/build.hs                    Help/analog-bubbles.hs                    Help/pitch.hs  Library   Build-Depends:   base == 4.*,-                   hsc3 == 0.8+                   hsc3 == 0.9   GHC-Options:     -Wall -fwarn-tabs   Exposed-modules: Sound.SC3.UGen.Record                    -- the lines below are generate by running@@ -74,6 +75,7 @@                    Sound.SC3.UGen.Record.BufSampleRate                    Sound.SC3.UGen.Record.BufSamples                    Sound.SC3.UGen.Record.BufWr+                   Sound.SC3.UGen.Record.Changed                    Sound.SC3.UGen.Record.ChaosGen                    Sound.SC3.UGen.Record.CheckBadValues                    Sound.SC3.UGen.Record.ClearBuf@@ -106,6 +108,8 @@                    Sound.SC3.UGen.Record.DelayC                    Sound.SC3.UGen.Record.DelayL                    Sound.SC3.UGen.Record.DelayN+                   Sound.SC3.UGen.Record.DelTapRd+                   Sound.SC3.UGen.Record.DelTapWr                    Sound.SC3.UGen.Record.DemandEnvGen                    Sound.SC3.UGen.Record.Demand                    Sound.SC3.UGen.Record.DetectIndex@@ -119,6 +123,7 @@                    Sound.SC3.UGen.Record.Done                    Sound.SC3.UGen.Record.Dpoll                    Sound.SC3.UGen.Record.Drand+                   Sound.SC3.UGen.Record.Dreset                    Sound.SC3.UGen.Record.Dseq                    Sound.SC3.UGen.Record.Dser                    Sound.SC3.UGen.Record.Dseries@@ -127,10 +132,12 @@                    Sound.SC3.UGen.Record.Dswitch1                    Sound.SC3.UGen.Record.Dswitch                    Sound.SC3.UGen.Record.DUGen+                   Sound.SC3.UGen.Record.Dunique                    Sound.SC3.UGen.Record.Dust2                    Sound.SC3.UGen.Record.Dust                    Sound.SC3.UGen.Record.Duty                    Sound.SC3.UGen.Record.Dwhite+                   Sound.SC3.UGen.Record.Dwrand                    Sound.SC3.UGen.Record.Dxrand                    Sound.SC3.UGen.Record.DynKlang                    Sound.SC3.UGen.Record.DynKlank@@ -178,6 +185,7 @@                    Sound.SC3.UGen.Record.Impulse                    Sound.SC3.UGen.Record.Index                    Sound.SC3.UGen.Record.IndexInBetween+                   Sound.SC3.UGen.Record.IndexL                    Sound.SC3.UGen.Record.InFeedback                    Sound.SC3.UGen.Record.In                    Sound.SC3.UGen.Record.InRange@@ -390,3 +398,7 @@                    Sound.SC3.UGen.Record.XLine                    Sound.SC3.UGen.Record.XOut                    Sound.SC3.UGen.Record.ZeroCrossing++Source-Repository  head+  Type:            darcs+  Location:        http://slavepianos.org/rd/sw/hsc3-rec/
+ mk/build.hs view
@@ -0,0 +1,160 @@+import Data.Char+import Sound.SC3.UGen.Rate+import qualified Sound.SC3.UGen.DB.Data as D+import System.FilePath+import Text.Printf++-- Rename parameters that conflict with keywords or prelude functions,+-- or which have otherwise unwieldy names.+rename_input :: String -> String+rename_input "in" = "input"+rename_input "channelsArray" = "input"+rename_input "exp" = "exp_"+rename_input "id" = "id_"+rename_input "length" = "length_"+rename_input "init" = "init_"+rename_input "floor" = "floor_"+rename_input "div" = "div_"+rename_input "max" = "max_"+rename_input "min" = "min_"+rename_input "spring" = "spring_"+rename_input "rate" = "rate_"+rename_input "default" = "default_"+rename_input s = s++-- Rename unit generators that conflict with keywords or prelude+-- functions.+rename_ugen :: String -> String+rename_ugen "in" = "in'"+rename_ugen s = s++input_name :: D.I -> String+input_name = rename_input . D.input_name++-- True if the unit generator can operate at multiple rates, in which+-- case the record will require a rate field.+needs_rate :: D.U -> Bool+needs_rate u = length (D.ugen_operating_rates u) > 1++-- In the case of one input rate use that instead of default rate,+-- which can be innacurate (see pitch for example).+fixed_rate :: D.U -> Rate+fixed_rate (D.U _ [r] _ _ _) = r+fixed_rate (D.U _ [] r _ _) = r+fixed_rate _ = undefined++-- List of field names and types.+inputs_of :: D.U -> [(String, String)]+inputs_of u =+    let is = D.ugen_inputs u+        bs = zip (map input_name is) (repeat "S.UGen")+    in if needs_rate u+       then ("rate", "S.Rate") : bs+       else bs++-- Append a character to each but the last string.+with_char :: Char -> [String] -> [String]+with_char c (x:y:xs) = (x ++ [c]) : with_char c (y:xs)+with_char _ xs = xs++with_comma :: [String] -> [String]+with_comma = with_char ','++with_space :: [String] -> [String]+with_space = with_char ' '++downcase_first_char :: String -> String+downcase_first_char [] = []+downcase_first_char (x:xs) = toLower x : xs++-- Construct the parameter record.+gen_param :: D.U -> [String]+gen_param u =+    let n = D.ugen_name u+        pre = [printf "data %s = %s {" n n]+        post = ["  } deriving (Show)"]+        f (nm, ty) = printf "  %s :: %s" nm ty+    in pre ++ with_comma (map f (inputs_of u)) ++ post++-- Construct a default instance of the parameter structure.+gen_defaults :: D.U -> [String]+gen_defaults u@(D.U n _ r is _) =+    let nm = rename_ugen (downcase_first_char n)+        pre = [ printf "%s :: %s" nm n+              , printf "%s = %s {" nm n]+        post = [ "  }" ]+        opt = if needs_rate u then [printf "  rate = S.%s," (show r)] else []+        f i = printf "  %s = %f" (input_name i) (D.input_default i)+    in pre ++ opt ++ with_comma (map f is) ++ post++-- Generate a list of variable names (a,b..)+var_names :: Int -> [String]+var_names n = map (\x -> x : "'") (take n ['a'..])++-- Generate the constructor for the unit generator.+gen_cons :: D.U -> [String]+gen_cons u@(D.U n _ _ is o) = +    let xs = var_names (length is)+        nr = needs_rate u+        l_opt = if nr then "r" else ""+        r_opt = if nr then "r" else printf "S.%s" (show (fixed_rate u))+    in [ printf "mk%s :: %s -> S.UGen" n n+       , printf "mk%s (%s %s %s) = S.mkOsc %s \"%s\" [%s] %d" +                n+                n+                l_opt+                (concat (with_space xs))+                r_opt+                n +                (concat (with_comma xs))+                o]++-- Generate instance of the Make class.+gen_make :: D.U -> [String]+gen_make u =+    let n = D.ugen_name u+    in [ printf "instance Make %s where" n+       , printf "  ugen = mk%s" n ]++-- Path to write files to.+sc3_ugen_dir :: FilePath+sc3_ugen_dir = "Sound" </> "SC3" </> "UGen"++-- Write module for a unit generator.+write_module :: D.U -> IO ()+write_module u =+    let n = D.ugen_name u+        m = [ printf "module Sound.SC3.UGen.Record.%s where" n+            , "import qualified Sound.SC3.UGen as S"+            , "import Sound.SC3.UGen.Record" ]+        p = gen_param u+        d = gen_defaults u+        c = gen_cons u+        i = gen_make u+        fn = sc3_ugen_dir </> "Record" </> n <.> ".hs"+    in writeFile fn (unlines (m ++ p ++ d ++ c ++ i))++main :: IO ()+main = do+  let us = filter (\u -> not (null (D.ugen_inputs u))) D.ugenDB+  mapM_ write_module us++{-+gen_module_clause :: [D.U] -> [String]+gen_module_clause us =+    let f u = printf "  module Sound.SC3.UGen.Record.%s" (D.ugen_name u)+        pre = ["{-# LANGUAGE DisambiguateRecordFields #-}"+              ,"module Sound.SC3.UGen.Record.All ("]+        post = ["  ) where"]+    in pre ++ with_comma (map f us) ++ post++gen_imports :: [D.U] -> [String]+gen_imports = +    let f u = printf "import Sound.SC3.UGen.Record.%s" (D.ugen_name u)+    in map f++write_records :: [D.U] -> IO ()+write_records us = +    let s = unlines (gen_module_clause us ++ gen_imports us)+    in writeFile (sc3_ugen_dir </> "Record" </> "All" <.> "hs") s+-}