> {-# LANGUAGE Arrows #-}
> module HSoM.Examples.SoundCheck where
> import Euterpea
> sineTable     = tableSinesN 16384 [1]
> sawtoothTable = tableSinesN 16384 
>                   [1, 0.5, 0.3, 0.25, 0.2, 0.167, 0.14, 0.125, 0.111]
> oscSine = osc sineTable 0
> sine :: AudSF () Double
> sine = 
>     proc _ -> do
>       oscSine -< 440
> sine_am :: AudSF () Double
> sine_am = 
>     proc _ -> do
>       amp  <- oscSine -< 5
>       s    <- oscSine -< 440
>       outA -< amp * s
> sine_fm :: AudSF () Double
> sine_fm = 
>     proc _ -> do
>       frq <- oscSine -< 3
>       oscSine -< 330 + frq * 110 -- oscillates between 220 and 440 at 3 Hz
> sine_fm2 :: AudSF () Double
> sine_fm2 = 
>     proc _ -> do
>       modfrq <- oscSine -< 0.1
>       frq    <- oscSine -< 3 + modfrq * 100
>       oscSine -< 330 + frq * 110 -- oscillates between 220 and 440 at 3 Hz
> sawtooth :: AudSF () Double
> sawtooth = 
>     proc _ -> do
>       osc sawtoothTable 0 -< 440
> squareWave :: AudSF () Double
> squareWave =
>     proc _ -> do
>       frq <- oscSine -< 1000
>       outA -< if frq > 0 then 0.99 else -0.99
> test :: AudSF () Double -> IO ()
> test = outFile "test.wav" 3.0