content: > {-# 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
  