{-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE ForeignFunctionInterface #-} {-# LANGUAGE JavaScriptFFI #-} -- For HasCallStack compatibility {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-} module GHCJS.DOM.JSFFI.Generated.AudioContext (js_newAudioContext, newAudioContext, js_suspend, suspend, js_resume, resume, js_close, close, js_createBuffer, createBuffer, createBuffer_, js_createBufferFromArrayBuffer, createBufferFromArrayBuffer, createBufferFromArrayBuffer_, js_decodeAudioData, decodeAudioData, js_createBufferSource, createBufferSource, createBufferSource_, js_createMediaElementSource, createMediaElementSource, createMediaElementSource_, js_createMediaStreamSource, createMediaStreamSource, createMediaStreamSource_, js_createMediaStreamDestination, createMediaStreamDestination, createMediaStreamDestination_, js_createGain, createGain, createGain_, js_createDelay, createDelay, createDelay_, js_createBiquadFilter, createBiquadFilter, createBiquadFilter_, js_createWaveShaper, createWaveShaper, createWaveShaper_, js_createPanner, createPanner, createPanner_, js_createConvolver, createConvolver, createConvolver_, js_createDynamicsCompressor, createDynamicsCompressor, createDynamicsCompressor_, js_createAnalyser, createAnalyser, createAnalyser_, js_createScriptProcessor, createScriptProcessor, createScriptProcessor_, js_createOscillator, createOscillator, createOscillator_, js_createPeriodicWave, createPeriodicWave, createPeriodicWave_, js_createChannelSplitter, createChannelSplitter, createChannelSplitter_, js_createChannelMerger, createChannelMerger, createChannelMerger_, js_startRendering, startRendering, js_getDestination, getDestination, js_getCurrentTime, getCurrentTime, js_getSampleRate, getSampleRate, js_getListener, getListener, js_getState, getState, statechange, js_getActiveSourceCount, getActiveSourceCount, complete, AudioContext(..), gTypeAudioContext, IsAudioContext, toAudioContext) where import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord) import qualified Prelude (error) import Data.Typeable (Typeable) import GHCJS.Types (JSVal(..), JSString) import GHCJS.Foreign (jsNull, jsUndefined) import GHCJS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..)) import GHCJS.Marshal (ToJSVal(..), FromJSVal(..)) import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..)) import Control.Monad (void) import Control.Monad.IO.Class (MonadIO(..)) import Data.Int (Int64) import Data.Word (Word, Word64) import Data.Maybe (fromJust) import Data.Traversable (mapM) import GHCJS.DOM.Types import Control.Applicative ((<$>)) import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName) import GHCJS.DOM.JSFFI.Generated.Enums foreign import javascript unsafe "new (window[\"AudioContext\"]\n||\nwindow[\"webkitAudioContext\"])()" js_newAudioContext :: IO AudioContext -- | newAudioContext :: (MonadIO m) => m AudioContext newAudioContext = liftIO (js_newAudioContext) foreign import javascript interruptible "$1[\"suspend\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);});" js_suspend :: AudioContext -> IO JSVal -- | suspend :: (MonadIO m, IsAudioContext self) => self -> m () suspend self = liftIO ((js_suspend (toAudioContext self)) >>= maybeThrowPromiseRejected) foreign import javascript interruptible "$1[\"resume\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);});" js_resume :: AudioContext -> IO JSVal -- | resume :: (MonadIO m, IsAudioContext self) => self -> m () resume self = liftIO ((js_resume (toAudioContext self)) >>= maybeThrowPromiseRejected) foreign import javascript interruptible "$1[\"close\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);});" js_close :: AudioContext -> IO JSVal -- | close :: (MonadIO m, IsAudioContext self) => self -> m () close self = liftIO ((js_close (toAudioContext self)) >>= maybeThrowPromiseRejected) foreign import javascript unsafe "$1[\"createBuffer\"]($2, $3, $4)" js_createBuffer :: AudioContext -> Word -> Word -> Float -> IO AudioBuffer -- | createBuffer :: (MonadIO m, IsAudioContext self) => self -> Word -> Word -> Float -> m AudioBuffer createBuffer self numberOfChannels numberOfFrames sampleRate = liftIO (js_createBuffer (toAudioContext self) numberOfChannels numberOfFrames sampleRate) -- | createBuffer_ :: (MonadIO m, IsAudioContext self) => self -> Word -> Word -> Float -> m () createBuffer_ self numberOfChannels numberOfFrames sampleRate = liftIO (void (js_createBuffer (toAudioContext self) numberOfChannels numberOfFrames sampleRate)) foreign import javascript unsafe "$1[\"createBuffer\"]($2, $3)" js_createBufferFromArrayBuffer :: AudioContext -> ArrayBuffer -> Bool -> IO AudioBuffer -- | createBufferFromArrayBuffer :: (MonadIO m, IsAudioContext self, IsArrayBuffer buffer) => self -> buffer -> Bool -> m AudioBuffer createBufferFromArrayBuffer self buffer mixToMono = liftIO (js_createBufferFromArrayBuffer (toAudioContext self) (toArrayBuffer buffer) mixToMono) -- | createBufferFromArrayBuffer_ :: (MonadIO m, IsAudioContext self, IsArrayBuffer buffer) => self -> buffer -> Bool -> m () createBufferFromArrayBuffer_ self buffer mixToMono = liftIO (void (js_createBufferFromArrayBuffer (toAudioContext self) (toArrayBuffer buffer) mixToMono)) foreign import javascript unsafe "$1[\"decodeAudioData\"]($2, $3,\n$4)" js_decodeAudioData :: AudioContext -> ArrayBuffer -> Optional AudioBufferCallback -> Optional AudioBufferCallback -> IO () -- | decodeAudioData :: (MonadIO m, IsAudioContext self, IsArrayBuffer audioData) => self -> audioData -> Maybe AudioBufferCallback -> Maybe AudioBufferCallback -> m () decodeAudioData self audioData successCallback errorCallback = liftIO (js_decodeAudioData (toAudioContext self) (toArrayBuffer audioData) (maybeToOptional successCallback) (maybeToOptional errorCallback)) foreign import javascript unsafe "$1[\"createBufferSource\"]()" js_createBufferSource :: AudioContext -> IO AudioBufferSourceNode -- | createBufferSource :: (MonadIO m, IsAudioContext self) => self -> m AudioBufferSourceNode createBufferSource self = liftIO (js_createBufferSource (toAudioContext self)) -- | createBufferSource_ :: (MonadIO m, IsAudioContext self) => self -> m () createBufferSource_ self = liftIO (void (js_createBufferSource (toAudioContext self))) foreign import javascript unsafe "$1[\"createMediaElementSource\"]($2)" js_createMediaElementSource :: AudioContext -> HTMLMediaElement -> IO MediaElementAudioSourceNode -- | createMediaElementSource :: (MonadIO m, IsAudioContext self, IsHTMLMediaElement mediaElement) => self -> mediaElement -> m MediaElementAudioSourceNode createMediaElementSource self mediaElement = liftIO (js_createMediaElementSource (toAudioContext self) (toHTMLMediaElement mediaElement)) -- | createMediaElementSource_ :: (MonadIO m, IsAudioContext self, IsHTMLMediaElement mediaElement) => self -> mediaElement -> m () createMediaElementSource_ self mediaElement = liftIO (void (js_createMediaElementSource (toAudioContext self) (toHTMLMediaElement mediaElement))) foreign import javascript unsafe "$1[\"createMediaStreamSource\"]($2)" js_createMediaStreamSource :: AudioContext -> MediaStream -> IO MediaStreamAudioSourceNode -- | createMediaStreamSource :: (MonadIO m, IsAudioContext self) => self -> MediaStream -> m MediaStreamAudioSourceNode createMediaStreamSource self mediaStream = liftIO (js_createMediaStreamSource (toAudioContext self) mediaStream) -- | createMediaStreamSource_ :: (MonadIO m, IsAudioContext self) => self -> MediaStream -> m () createMediaStreamSource_ self mediaStream = liftIO (void (js_createMediaStreamSource (toAudioContext self) mediaStream)) foreign import javascript unsafe "$1[\"createMediaStreamDestination\"]()" js_createMediaStreamDestination :: AudioContext -> IO MediaStreamAudioDestinationNode -- | createMediaStreamDestination :: (MonadIO m, IsAudioContext self) => self -> m MediaStreamAudioDestinationNode createMediaStreamDestination self = liftIO (js_createMediaStreamDestination (toAudioContext self)) -- | createMediaStreamDestination_ :: (MonadIO m, IsAudioContext self) => self -> m () createMediaStreamDestination_ self = liftIO (void (js_createMediaStreamDestination (toAudioContext self))) foreign import javascript unsafe "$1[\"createGain\"]()" js_createGain :: AudioContext -> IO GainNode -- | createGain :: (MonadIO m, IsAudioContext self) => self -> m GainNode createGain self = liftIO (js_createGain (toAudioContext self)) -- | createGain_ :: (MonadIO m, IsAudioContext self) => self -> m () createGain_ self = liftIO (void (js_createGain (toAudioContext self))) foreign import javascript unsafe "$1[\"createDelay\"]($2)" js_createDelay :: AudioContext -> Optional Double -> IO DelayNode -- | createDelay :: (MonadIO m, IsAudioContext self) => self -> Maybe Double -> m DelayNode createDelay self maxDelayTime = liftIO (js_createDelay (toAudioContext self) (maybeToOptional maxDelayTime)) -- | createDelay_ :: (MonadIO m, IsAudioContext self) => self -> Maybe Double -> m () createDelay_ self maxDelayTime = liftIO (void (js_createDelay (toAudioContext self) (maybeToOptional maxDelayTime))) foreign import javascript unsafe "$1[\"createBiquadFilter\"]()" js_createBiquadFilter :: AudioContext -> IO BiquadFilterNode -- | createBiquadFilter :: (MonadIO m, IsAudioContext self) => self -> m BiquadFilterNode createBiquadFilter self = liftIO (js_createBiquadFilter (toAudioContext self)) -- | createBiquadFilter_ :: (MonadIO m, IsAudioContext self) => self -> m () createBiquadFilter_ self = liftIO (void (js_createBiquadFilter (toAudioContext self))) foreign import javascript unsafe "$1[\"createWaveShaper\"]()" js_createWaveShaper :: AudioContext -> IO WaveShaperNode -- | createWaveShaper :: (MonadIO m, IsAudioContext self) => self -> m WaveShaperNode createWaveShaper self = liftIO (js_createWaveShaper (toAudioContext self)) -- | createWaveShaper_ :: (MonadIO m, IsAudioContext self) => self -> m () createWaveShaper_ self = liftIO (void (js_createWaveShaper (toAudioContext self))) foreign import javascript unsafe "$1[\"createPanner\"]()" js_createPanner :: AudioContext -> IO PannerNode -- | createPanner :: (MonadIO m, IsAudioContext self) => self -> m PannerNode createPanner self = liftIO (js_createPanner (toAudioContext self)) -- | createPanner_ :: (MonadIO m, IsAudioContext self) => self -> m () createPanner_ self = liftIO (void (js_createPanner (toAudioContext self))) foreign import javascript unsafe "$1[\"createConvolver\"]()" js_createConvolver :: AudioContext -> IO ConvolverNode -- | createConvolver :: (MonadIO m, IsAudioContext self) => self -> m ConvolverNode createConvolver self = liftIO (js_createConvolver (toAudioContext self)) -- | createConvolver_ :: (MonadIO m, IsAudioContext self) => self -> m () createConvolver_ self = liftIO (void (js_createConvolver (toAudioContext self))) foreign import javascript unsafe "$1[\"createDynamicsCompressor\"]()" js_createDynamicsCompressor :: AudioContext -> IO DynamicsCompressorNode -- | createDynamicsCompressor :: (MonadIO m, IsAudioContext self) => self -> m DynamicsCompressorNode createDynamicsCompressor self = liftIO (js_createDynamicsCompressor (toAudioContext self)) -- | createDynamicsCompressor_ :: (MonadIO m, IsAudioContext self) => self -> m () createDynamicsCompressor_ self = liftIO (void (js_createDynamicsCompressor (toAudioContext self))) foreign import javascript unsafe "$1[\"createAnalyser\"]()" js_createAnalyser :: AudioContext -> IO AnalyserNode -- | createAnalyser :: (MonadIO m, IsAudioContext self) => self -> m AnalyserNode createAnalyser self = liftIO (js_createAnalyser (toAudioContext self)) -- | createAnalyser_ :: (MonadIO m, IsAudioContext self) => self -> m () createAnalyser_ self = liftIO (void (js_createAnalyser (toAudioContext self))) foreign import javascript unsafe "$1[\"createScriptProcessor\"]($2,\n$3, $4)" js_createScriptProcessor :: AudioContext -> Word -> Optional Word -> Optional Word -> IO ScriptProcessorNode -- | createScriptProcessor :: (MonadIO m, IsAudioContext self) => self -> Word -> Maybe Word -> Maybe Word -> m ScriptProcessorNode createScriptProcessor self bufferSize numberOfInputChannels numberOfOutputChannels = liftIO (js_createScriptProcessor (toAudioContext self) bufferSize (maybeToOptional numberOfInputChannels) (maybeToOptional numberOfOutputChannels)) -- | createScriptProcessor_ :: (MonadIO m, IsAudioContext self) => self -> Word -> Maybe Word -> Maybe Word -> m () createScriptProcessor_ self bufferSize numberOfInputChannels numberOfOutputChannels = liftIO (void (js_createScriptProcessor (toAudioContext self) bufferSize (maybeToOptional numberOfInputChannels) (maybeToOptional numberOfOutputChannels))) foreign import javascript unsafe "$1[\"createOscillator\"]()" js_createOscillator :: AudioContext -> IO OscillatorNode -- | createOscillator :: (MonadIO m, IsAudioContext self) => self -> m OscillatorNode createOscillator self = liftIO (js_createOscillator (toAudioContext self)) -- | createOscillator_ :: (MonadIO m, IsAudioContext self) => self -> m () createOscillator_ self = liftIO (void (js_createOscillator (toAudioContext self))) foreign import javascript unsafe "$1[\"createPeriodicWave\"]($2, $3)" js_createPeriodicWave :: AudioContext -> Float32Array -> Float32Array -> IO PeriodicWave -- | createPeriodicWave :: (MonadIO m, IsAudioContext self, IsFloat32Array real, IsFloat32Array imag) => self -> real -> imag -> m PeriodicWave createPeriodicWave self real imag = liftIO (js_createPeriodicWave (toAudioContext self) (toFloat32Array real) (toFloat32Array imag)) -- | createPeriodicWave_ :: (MonadIO m, IsAudioContext self, IsFloat32Array real, IsFloat32Array imag) => self -> real -> imag -> m () createPeriodicWave_ self real imag = liftIO (void (js_createPeriodicWave (toAudioContext self) (toFloat32Array real) (toFloat32Array imag))) foreign import javascript unsafe "$1[\"createChannelSplitter\"]($2)" js_createChannelSplitter :: AudioContext -> Optional Word -> IO ChannelSplitterNode -- | createChannelSplitter :: (MonadIO m, IsAudioContext self) => self -> Maybe Word -> m ChannelSplitterNode createChannelSplitter self numberOfOutputs = liftIO (js_createChannelSplitter (toAudioContext self) (maybeToOptional numberOfOutputs)) -- | createChannelSplitter_ :: (MonadIO m, IsAudioContext self) => self -> Maybe Word -> m () createChannelSplitter_ self numberOfOutputs = liftIO (void (js_createChannelSplitter (toAudioContext self) (maybeToOptional numberOfOutputs))) foreign import javascript unsafe "$1[\"createChannelMerger\"]($2)" js_createChannelMerger :: AudioContext -> Optional Word -> IO ChannelMergerNode -- | createChannelMerger :: (MonadIO m, IsAudioContext self) => self -> Maybe Word -> m ChannelMergerNode createChannelMerger self numberOfInputs = liftIO (js_createChannelMerger (toAudioContext self) (maybeToOptional numberOfInputs)) -- | createChannelMerger_ :: (MonadIO m, IsAudioContext self) => self -> Maybe Word -> m () createChannelMerger_ self numberOfInputs = liftIO (void (js_createChannelMerger (toAudioContext self) (maybeToOptional numberOfInputs))) foreign import javascript unsafe "$1[\"startRendering\"]()" js_startRendering :: AudioContext -> IO () -- | startRendering :: (MonadIO m, IsAudioContext self) => self -> m () startRendering self = liftIO (js_startRendering (toAudioContext self)) foreign import javascript unsafe "$1[\"destination\"]" js_getDestination :: AudioContext -> IO AudioDestinationNode -- | getDestination :: (MonadIO m, IsAudioContext self) => self -> m AudioDestinationNode getDestination self = liftIO (js_getDestination (toAudioContext self)) foreign import javascript unsafe "$1[\"currentTime\"]" js_getCurrentTime :: AudioContext -> IO Double -- | getCurrentTime :: (MonadIO m, IsAudioContext self) => self -> m Double getCurrentTime self = liftIO (js_getCurrentTime (toAudioContext self)) foreign import javascript unsafe "$1[\"sampleRate\"]" js_getSampleRate :: AudioContext -> IO Float -- | getSampleRate :: (MonadIO m, IsAudioContext self) => self -> m Float getSampleRate self = liftIO (js_getSampleRate (toAudioContext self)) foreign import javascript unsafe "$1[\"listener\"]" js_getListener :: AudioContext -> IO AudioListener -- | getListener :: (MonadIO m, IsAudioContext self) => self -> m AudioListener getListener self = liftIO (js_getListener (toAudioContext self)) foreign import javascript unsafe "$1[\"state\"]" js_getState :: AudioContext -> IO JSVal -- | getState :: (MonadIO m, IsAudioContext self) => self -> m AudioContextState getState self = liftIO ((js_getState (toAudioContext self)) >>= fromJSValUnchecked) -- | statechange :: (IsAudioContext self, IsEventTarget self) => EventName self onstatechange statechange = unsafeEventName (toJSString "statechange") foreign import javascript unsafe "$1[\"activeSourceCount\"]" js_getActiveSourceCount :: AudioContext -> IO Word -- | getActiveSourceCount :: (MonadIO m, IsAudioContext self) => self -> m Word getActiveSourceCount self = liftIO (js_getActiveSourceCount (toAudioContext self)) -- | complete :: (IsAudioContext self, IsEventTarget self) => EventName self OfflineAudioCompletionEvent complete = unsafeEventName (toJSString "complete")