packages feed

canvhs-0.2.0.0: src/Audio/AudHs/FFI.hs

module Audio.AudHs.FFI(module Audio.AudHs.FFI) where

newtype AudioNode = AudioNode Int
  deriving (Show, Eq, Ord)

masterOutput :: AudioNode
masterOutput = AudioNode 0

foreign import javascript unsafe "js_initAudio()"                     initAudio        :: IO ()
foreign import javascript unsafe "return js_currentTime()"            currentTime      :: IO Double
foreign import javascript unsafe "return js_createOscillator($0)"     createOscillator :: Int -> IO AudioNode
foreign import javascript unsafe "return js_createGain()"             createGain       :: IO AudioNode
foreign import javascript unsafe "js_connect($0, $1)"                 connectNodes     :: AudioNode -> AudioNode -> IO ()
foreign import javascript unsafe "js_setFrequency($0, $1, $2)"        setFrequency     :: AudioNode -> Double -> Double -> IO ()
foreign import javascript unsafe "js_setGain($0, $1, $2)"             setGain          :: AudioNode -> Double -> Double -> IO ()
foreign import javascript unsafe "js_rampGain($0, $1, $2)"            rampGain         :: AudioNode -> Double -> Double -> IO ()
foreign import javascript unsafe "js_startNode($0, $1)"               startNode        :: AudioNode -> Double -> IO ()
foreign import javascript unsafe "js_stopNode($0, $1)"                stopNode         :: AudioNode -> Double -> IO ()