CCA-0.1: test/Sample.as
module Sample where
import Control.CCA
import Prelude hiding (init, exp)
import Language.Haskell.TH
sr = 44100 :: Int
dt = 1 / (fromIntegral sr)
exp :: ArrowInit a => a () Double
exp = proc () -> do
rec let e = 1 + i
i <- integral -< e
returnA -< e
integral :: ArrowInit a => a Double Double
integral = proc x -> do
rec let i' = i + x * dt
i <- init 0 -< i'
returnA -< i
sineA :: ArrowInit a => Double -> a () Double
sineA freq = proc _ -> do
rec
d2o <- init (sin omh) -< r
d1o <- init 0 -< d2o
let r = 2 * cos(omh) * d2o - d1o
returnA -< r
where
omh = 2*pi/(fromIntegral sr)*freq
sine :: ArrowInit a => Double -> a () Double
sine freq = proc _ -> do
rec x <- init i -< r
y <- init 0 -< x
let r = c * x - y
returnA -< r
where
omh = 2 * pi / (fromIntegral sr) * freq
i = sin omh
c = 2 * cos omh