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 +1/−1
- Setup.hs +3/−0
- Setup.lhs +0/−3
- Sound/SC3/UGen/Record/Blip.hs +3/−1
- Sound/SC3/UGen/Record/Changed.hs +18/−0
- Sound/SC3/UGen/Record/Convolution2.hs +1/−1
- Sound/SC3/UGen/Record/Convolution2L.hs +1/−1
- Sound/SC3/UGen/Record/Convolution3.hs +1/−1
- Sound/SC3/UGen/Record/DelTapRd.hs +22/−0
- Sound/SC3/UGen/Record/DelTapWr.hs +18/−0
- Sound/SC3/UGen/Record/Dreset.hs +16/−0
- Sound/SC3/UGen/Record/Dunique.hs +14/−0
- Sound/SC3/UGen/Record/Dwrand.hs +18/−0
- Sound/SC3/UGen/Record/DynKlang.hs +3/−1
- Sound/SC3/UGen/Record/DynKlank.hs +3/−1
- Sound/SC3/UGen/Record/GrainBuf.hs +5/−3
- Sound/SC3/UGen/Record/GrainFM.hs +5/−3
- Sound/SC3/UGen/Record/GrainIn.hs +5/−3
- Sound/SC3/UGen/Record/GrainSin.hs +5/−3
- Sound/SC3/UGen/Record/IndexL.hs +18/−0
- Sound/SC3/UGen/Record/LocalIn.hs +5/−3
- Sound/SC3/UGen/Record/Peak.hs +4/−4
- Sound/SC3/UGen/Record/Pitch.hs +5/−3
- Sound/SC3/UGen/Record/Pulse.hs +3/−1
- Sound/SC3/UGen/Record/RunningMax.hs +4/−4
- Sound/SC3/UGen/Record/RunningMin.hs +4/−4
- Sound/SC3/UGen/Record/Saw.hs +3/−1
- Sound/SC3/UGen/Record/StereoConvolution2L.hs +1/−1
- hsc3-rec.cabal +16/−4
- mk/build.hs +160/−0
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+-}