{-# LANGUAGE Arrows #-} module Euterpea.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