conductive-hsc3 0.2 → 0.3
raw patch · 2 files changed
+2/−150 lines, 2 files
Files
- Sound/Conductive/Synths.hs +1/−149
- conductive-hsc3.cabal +1/−1
Sound/Conductive/Synths.hs view
@@ -18,8 +18,7 @@ import Sound.Conductive.Scale import Sound.OpenSoundControl import Sound.SC3-import Sound.SC3.ID hiding (brownNoise)-import Sound.SC3.Monadic+import Sound.SC3.ID import System.Random hiding (next) pingDef :: IO OSC@@ -39,153 +38,6 @@ ] in withSC3 (\fd -> send fd (s_new "ping2" (-1) AddToTail 1 ps)) -drone1Def :: IO OSC-drone1Def = - let fi = control IR "f" 440- d = control IR "d" 1- p = envPerc 0.03 d- e = envGen KR 1 0.1 0 1 RemoveSynth p- fb = fi- f = mce [fb*0.5,fb,fb*1.005,fb*1.010,fb*2,fb*2.5,fb*4]- ff = xLine KR 400 4000 d RemoveSynth- o = out 0 (formant AR f ff 200 * e)- i fd = do async fd (d_recv (synthdef "drone1" o))- in withSC3 i--drone1 :: Double -> Double -> IO ()-drone1 freq dur =- let ps = [("f",freq)- ,("d",dur)- ]- in withSC3 (\fd -> send fd (s_new "drone1" (-1) AddToTail 1 ps))--drone2Def :: IO OSC-drone2Def = - let cf = control IR "f" 440- d = control IR "d" 1- mf = control IR "mf" 100 -- between 0 and 800- pm'= control IR "pm" 2 -- between 0 12- pm = line KR 0 pm' 9 DoNothing - p = envPerc 0.03 d- e = envGen KR 1 0.1 0 1 RemoveSynth p- f = mce [cf,cf*1.005]- o = out 0 (pmOsc AR f mf pm 0 * e)- i fd = do async fd (d_recv (synthdef "drone2" o))- in withSC3 i--drone2 :: Double -> Double -> Double -> Double -> IO ()-drone2 freq modFreq modAmp dur =- let ps = [("f",freq)- ,("mf",modFreq)- ,("pm",modAmp)- ,("d",dur)- ]- in withSC3 (\fd -> send fd (s_new "drone2" (-1) AddToTail 1 ps))--tamburaDef :: IO OSC-tamburaDef = - let cf = control IR "f" 440- d = control IR "d" 1- t = (impulse KR 0.001 0)- --x = mouseX KR (-0.999) 0.999 Linear 0.1- x = control IR "t" 0.2- y = 1- dl = mce[1/f,1/(f*1.02)]- p = envPerc 0.01 d- e = envGen KR 1 0.1 0 1 RemoveSynth p- f = mce [cf,cf*1.005]- i fd = do n <- brownNoise AR- let o = out 0 (pluck (n * 0.5) t (dl) (dl * y) 5 x * e)- async fd (d_recv (synthdef "tambura" o))- in withSC3 i--tambura :: Double -> Double -> Double -> IO ()-tambura freq timbre dur = - let ps = [("f",freq)- ,("d",dur)- ,("t",timbre)- ]- in withSC3 (\fd -> send fd (s_new "tambura" (-1) AddToTail 1 ps))--compositeDroneDef :: IO ()-compositeDroneDef = sequence_ [drone1Def,drone2Def,tamburaDef]--compositeDrone :: Integer -> Double -> Double -> Double -> IO ()-compositeDrone s m1 m2 d = - let a f d = drone1 f d- b f m1 m2 d = drone2 f m1 m2 d- tamb f t d = tambura f t d- f = fromJust $ semitoneToFreq s- in sequence_ [a f d,b f m1 m2 d,tamb f (0.3 + (m2/10)) d]--solo1Def :: IO OSC-solo1Def = - let cf = control IR "f" 440- attack = control IR "attack" 0.01- d = control IR "d" 1- mf = control IR "mf" 100 -- between 0 and 800- pm'= control IR "pm" 2 -- between 0 12- pm = line KR 0 pm' 9 DoNothing - p = envPerc attack d- e = envGen KR 1 0.1 0 1 RemoveSynth p- f = mce [cf,cf*1.005]- o1 = (pmOsc AR f mf pm 0 * e)- o2 = (pmOsc AR f (mf/2) pm 0 * e)- o3 = (pmOsc AR f (mf*2) pm 0 * e)- o = out 0 (o1+o2+o3)- i fd = do async fd (d_recv (synthdef "solo1" o))- in withSC3 i--solo1 :: Integer -> Double -> Double -> Double -> Double -> IO ()-solo1 freq modFreq modAmp attack dur =- let f = fromJust $ semitoneToFreq freq- ps = [("f",f)- ,("mf",modFreq)- ,("pm",modAmp)- ,("attack",attack)- ,("d",dur)- ]- in withSC3 (\fd -> send fd (s_new "solo1" (-1) AddToTail 1 ps))---- playSolo1 :: MVar MusicalEnvironment -> t -> IO ()--- playSolo1 e p = do --- let pg param = getDoubleGenerator e param--- fG <- pg "soloFreq"--- fmG <- pg "soloFMod"--- amG <- pg "soloAMod"--- attG <- pg "soloAttack"--- durG <- pg "soloDur"--- f <- next fG--- fm <- next fmG--- am <- next amG--- att <- next attG--- dur <- next durG--- solo1 (floor f) fm am att dur--subKickDef :: Int -> IO ()-subKickDef n = let- b1 = control IR "b1" 0- b2 = control IR "b2" 1- f1 = control KR "f1" 450- f2 = control KR "f2" 900- d1 = control KR "d1" 1- amp = control KR "amp" 0.5- a1 = tr_control "a1" 0- a2 = tr_control "a2" 0- m = impulse KR 1 0 * 0.1- d x = decay2 (x) 0.01 d1 - o1 = sinOsc AR (mce [f1,f1+0.01]) 0 * d a1 * amp- o2 = saw AR (mce [f2,f2+0.001]) * d a2- g = mrg2 (out b1 o1) (out b2 o2)- i fd = do async fd (d_recv (synthdef "g" g))- send fd (s_new "g" n AddToTail 1 [])- in withSC3 i--subKick :: Int -> Double -> Double -> IO ()-subKick n freq dur = withSC3 (\fd -> send fd (n_set n [("a1",1)- ,("f1",freq)- ,("d1",dur)- ,("amp",0.5)])) ------------------------------------------------------------------------------ -- trying a method for defining synths
conductive-hsc3.cabal view
@@ -7,7 +7,7 @@ -- The package version. See the Haskell package versioning policy -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for -- standards guiding when and how versions should be incremented.-Version: 0.2+Version: 0.3 -- A short (one-line) description of the package. Synopsis: a library with examples of using Conductive with hsc3