{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.AudioContext
       (newAudioContext, suspend, resume, close, createBuffer,
        createBuffer_, createBufferFromArrayBuffer,
        createBufferFromArrayBuffer_, decodeAudioData, createBufferSource,
        createBufferSource_, createMediaElementSource,
        createMediaElementSource_, createMediaStreamSource,
        createMediaStreamSource_, createMediaStreamDestination,
        createMediaStreamDestination_, createGain, createGain_,
        createDelay, createDelay_, createBiquadFilter, createBiquadFilter_,
        createWaveShaper, createWaveShaper_, createPanner, createPanner_,
        createConvolver, createConvolver_, createDynamicsCompressor,
        createDynamicsCompressor_, createAnalyser, createAnalyser_,
        createScriptProcessor, createScriptProcessor_, createOscillator,
        createOscillator_, createPeriodicWave, createPeriodicWave_,
        createChannelSplitter, createChannelSplitter_, createChannelMerger,
        createChannelMerger_, startRendering, getDestination,
        getCurrentTime, getSampleRate, getListener, getState, statechange,
        getActiveSourceCount, complete, AudioContext(..),
        gTypeAudioContext, IsAudioContext, toAudioContext)
       where
import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
import qualified Prelude (error)
import Data.Typeable (Typeable)
import Data.Traversable (mapM)
import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
import Data.Int (Int64)
import Data.Word (Word, Word64)
import JSDOM.Types
import Control.Applicative ((<$>))
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Enums

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext Mozilla AudioContext documentation> 
newAudioContext :: (MonadDOM m) => m AudioContext
newAudioContext :: m AudioContext
newAudioContext
  = DOM AudioContext -> m AudioContext
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSVal -> AudioContext
AudioContext (JSVal -> AudioContext) -> JSM JSVal -> DOM AudioContext
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> JSM JSVal -> () -> JSM JSVal
forall constructor args.
(MakeObject constructor, MakeArgs args) =>
constructor -> args -> JSM JSVal
new ([Char] -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg [Char]
"AudioContext") ())

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.suspend Mozilla AudioContext.suspend documentation> 
suspend :: (MonadDOM m, IsAudioContext self) => self -> m ()
suspend :: self -> m ()
suspend self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"suspend" ()) JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.resume Mozilla AudioContext.resume documentation> 
resume :: (MonadDOM m, IsAudioContext self) => self -> m ()
resume :: self -> m ()
resume self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"resume" ()) JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.close Mozilla AudioContext.close documentation> 
close :: (MonadDOM m, IsAudioContext self) => self -> m ()
close :: self -> m ()
close self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"close" ()) JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
createBuffer ::
             (MonadDOM m, IsAudioContext self) =>
               self -> Word -> Word -> Float -> m AudioBuffer
createBuffer :: self -> Word -> Word -> Float -> m AudioBuffer
createBuffer self
self Word
numberOfChannels Word
numberOfFrames Float
sampleRate
  = DOM AudioBuffer -> m AudioBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createBuffer"
          [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
numberOfChannels, Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
numberOfFrames,
           Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
sampleRate])
         JSM JSVal -> (JSVal -> DOM AudioBuffer) -> DOM AudioBuffer
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM AudioBuffer
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
createBuffer_ ::
              (MonadDOM m, IsAudioContext self) =>
                self -> Word -> Word -> Float -> m ()
createBuffer_ :: self -> Word -> Word -> Float -> m ()
createBuffer_ self
self Word
numberOfChannels Word
numberOfFrames Float
sampleRate
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createBuffer"
            [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
numberOfChannels, Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
numberOfFrames,
             Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
sampleRate]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
createBufferFromArrayBuffer ::
                            (MonadDOM m, IsAudioContext self, IsArrayBuffer buffer) =>
                              self -> buffer -> Bool -> m AudioBuffer
createBufferFromArrayBuffer :: self -> buffer -> Bool -> m AudioBuffer
createBufferFromArrayBuffer self
self buffer
buffer Bool
mixToMono
  = DOM AudioBuffer -> m AudioBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createBuffer"
          [buffer -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal buffer
buffer, Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
mixToMono])
         JSM JSVal -> (JSVal -> DOM AudioBuffer) -> DOM AudioBuffer
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM AudioBuffer
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
createBufferFromArrayBuffer_ ::
                             (MonadDOM m, IsAudioContext self, IsArrayBuffer buffer) =>
                               self -> buffer -> Bool -> m ()
createBufferFromArrayBuffer_ :: self -> buffer -> Bool -> m ()
createBufferFromArrayBuffer_ self
self buffer
buffer Bool
mixToMono
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createBuffer"
            [buffer -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal buffer
buffer, Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
mixToMono]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.decodeAudioData Mozilla AudioContext.decodeAudioData documentation> 
decodeAudioData ::
                (MonadDOM m, IsAudioContext self, IsArrayBuffer audioData) =>
                  self ->
                    audioData ->
                      Maybe AudioBufferCallback -> Maybe AudioBufferCallback -> m ()
decodeAudioData :: self
-> audioData
-> Maybe AudioBufferCallback
-> Maybe AudioBufferCallback
-> m ()
decodeAudioData self
self audioData
audioData Maybe AudioBufferCallback
successCallback Maybe AudioBufferCallback
errorCallback
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"decodeAudioData"
            [audioData -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal audioData
audioData, Maybe AudioBufferCallback -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe AudioBufferCallback
successCallback,
             Maybe AudioBufferCallback -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe AudioBufferCallback
errorCallback]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBufferSource Mozilla AudioContext.createBufferSource documentation> 
createBufferSource ::
                   (MonadDOM m, IsAudioContext self) =>
                     self -> m AudioBufferSourceNode
createBufferSource :: self -> m AudioBufferSourceNode
createBufferSource self
self
  = DOM AudioBufferSourceNode -> m AudioBufferSourceNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createBufferSource" ()) JSM JSVal
-> (JSVal -> DOM AudioBufferSourceNode)
-> DOM AudioBufferSourceNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM AudioBufferSourceNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBufferSource Mozilla AudioContext.createBufferSource documentation> 
createBufferSource_ ::
                    (MonadDOM m, IsAudioContext self) => self -> m ()
createBufferSource_ :: self -> m ()
createBufferSource_ self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createBufferSource" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaElementSource Mozilla AudioContext.createMediaElementSource documentation> 
createMediaElementSource ::
                         (MonadDOM m, IsAudioContext self,
                          IsHTMLMediaElement mediaElement) =>
                           self -> mediaElement -> m MediaElementAudioSourceNode
createMediaElementSource :: self -> mediaElement -> m MediaElementAudioSourceNode
createMediaElementSource self
self mediaElement
mediaElement
  = DOM MediaElementAudioSourceNode -> m MediaElementAudioSourceNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createMediaElementSource"
          [mediaElement -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal mediaElement
mediaElement])
         JSM JSVal
-> (JSVal -> DOM MediaElementAudioSourceNode)
-> DOM MediaElementAudioSourceNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM MediaElementAudioSourceNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaElementSource Mozilla AudioContext.createMediaElementSource documentation> 
createMediaElementSource_ ::
                          (MonadDOM m, IsAudioContext self,
                           IsHTMLMediaElement mediaElement) =>
                            self -> mediaElement -> m ()
createMediaElementSource_ :: self -> mediaElement -> m ()
createMediaElementSource_ self
self mediaElement
mediaElement
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createMediaElementSource"
            [mediaElement -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal mediaElement
mediaElement]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamSource Mozilla AudioContext.createMediaStreamSource documentation> 
createMediaStreamSource ::
                        (MonadDOM m, IsAudioContext self) =>
                          self -> MediaStream -> m MediaStreamAudioSourceNode
createMediaStreamSource :: self -> MediaStream -> m MediaStreamAudioSourceNode
createMediaStreamSource self
self MediaStream
mediaStream
  = DOM MediaStreamAudioSourceNode -> m MediaStreamAudioSourceNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createMediaStreamSource"
          [MediaStream -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal MediaStream
mediaStream])
         JSM JSVal
-> (JSVal -> DOM MediaStreamAudioSourceNode)
-> DOM MediaStreamAudioSourceNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM MediaStreamAudioSourceNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamSource Mozilla AudioContext.createMediaStreamSource documentation> 
createMediaStreamSource_ ::
                         (MonadDOM m, IsAudioContext self) => self -> MediaStream -> m ()
createMediaStreamSource_ :: self -> MediaStream -> m ()
createMediaStreamSource_ self
self MediaStream
mediaStream
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createMediaStreamSource"
            [MediaStream -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal MediaStream
mediaStream]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamDestination Mozilla AudioContext.createMediaStreamDestination documentation> 
createMediaStreamDestination ::
                             (MonadDOM m, IsAudioContext self) =>
                               self -> m MediaStreamAudioDestinationNode
createMediaStreamDestination :: self -> m MediaStreamAudioDestinationNode
createMediaStreamDestination self
self
  = DOM MediaStreamAudioDestinationNode
-> m MediaStreamAudioDestinationNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createMediaStreamDestination" ())
         JSM JSVal
-> (JSVal -> DOM MediaStreamAudioDestinationNode)
-> DOM MediaStreamAudioDestinationNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM MediaStreamAudioDestinationNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamDestination Mozilla AudioContext.createMediaStreamDestination documentation> 
createMediaStreamDestination_ ::
                              (MonadDOM m, IsAudioContext self) => self -> m ()
createMediaStreamDestination_ :: self -> m ()
createMediaStreamDestination_ self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createMediaStreamDestination" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGain Mozilla AudioContext.createGain documentation> 
createGain ::
           (MonadDOM m, IsAudioContext self) => self -> m GainNode
createGain :: self -> m GainNode
createGain self
self
  = DOM GainNode -> m GainNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createGain" ()) JSM JSVal -> (JSVal -> DOM GainNode) -> DOM GainNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM GainNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGain Mozilla AudioContext.createGain documentation> 
createGain_ :: (MonadDOM m, IsAudioContext self) => self -> m ()
createGain_ :: self -> m ()
createGain_ self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createGain" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelay Mozilla AudioContext.createDelay documentation> 
createDelay ::
            (MonadDOM m, IsAudioContext self) =>
              self -> Maybe Double -> m DelayNode
createDelay :: self -> Maybe Double -> m DelayNode
createDelay self
self Maybe Double
maxDelayTime
  = DOM DelayNode -> m DelayNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createDelay"
          [Maybe Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Double
maxDelayTime])
         JSM JSVal -> (JSVal -> DOM DelayNode) -> DOM DelayNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM DelayNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelay Mozilla AudioContext.createDelay documentation> 
createDelay_ ::
             (MonadDOM m, IsAudioContext self) => self -> Maybe Double -> m ()
createDelay_ :: self -> Maybe Double -> m ()
createDelay_ self
self Maybe Double
maxDelayTime
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createDelay"
            [Maybe Double -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Double
maxDelayTime]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBiquadFilter Mozilla AudioContext.createBiquadFilter documentation> 
createBiquadFilter ::
                   (MonadDOM m, IsAudioContext self) => self -> m BiquadFilterNode
createBiquadFilter :: self -> m BiquadFilterNode
createBiquadFilter self
self
  = DOM BiquadFilterNode -> m BiquadFilterNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createBiquadFilter" ()) JSM JSVal
-> (JSVal -> DOM BiquadFilterNode) -> DOM BiquadFilterNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM BiquadFilterNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBiquadFilter Mozilla AudioContext.createBiquadFilter documentation> 
createBiquadFilter_ ::
                    (MonadDOM m, IsAudioContext self) => self -> m ()
createBiquadFilter_ :: self -> m ()
createBiquadFilter_ self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createBiquadFilter" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createWaveShaper Mozilla AudioContext.createWaveShaper documentation> 
createWaveShaper ::
                 (MonadDOM m, IsAudioContext self) => self -> m WaveShaperNode
createWaveShaper :: self -> m WaveShaperNode
createWaveShaper self
self
  = DOM WaveShaperNode -> m WaveShaperNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createWaveShaper" ()) JSM JSVal -> (JSVal -> DOM WaveShaperNode) -> DOM WaveShaperNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM WaveShaperNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createWaveShaper Mozilla AudioContext.createWaveShaper documentation> 
createWaveShaper_ ::
                  (MonadDOM m, IsAudioContext self) => self -> m ()
createWaveShaper_ :: self -> m ()
createWaveShaper_ self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createWaveShaper" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPanner Mozilla AudioContext.createPanner documentation> 
createPanner ::
             (MonadDOM m, IsAudioContext self) => self -> m PannerNode
createPanner :: self -> m PannerNode
createPanner self
self
  = DOM PannerNode -> m PannerNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createPanner" ()) JSM JSVal -> (JSVal -> DOM PannerNode) -> DOM PannerNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM PannerNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPanner Mozilla AudioContext.createPanner documentation> 
createPanner_ :: (MonadDOM m, IsAudioContext self) => self -> m ()
createPanner_ :: self -> m ()
createPanner_ self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createPanner" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createConvolver Mozilla AudioContext.createConvolver documentation> 
createConvolver ::
                (MonadDOM m, IsAudioContext self) => self -> m ConvolverNode
createConvolver :: self -> m ConvolverNode
createConvolver self
self
  = DOM ConvolverNode -> m ConvolverNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createConvolver" ()) JSM JSVal -> (JSVal -> DOM ConvolverNode) -> DOM ConvolverNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM ConvolverNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createConvolver Mozilla AudioContext.createConvolver documentation> 
createConvolver_ ::
                 (MonadDOM m, IsAudioContext self) => self -> m ()
createConvolver_ :: self -> m ()
createConvolver_ self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createConvolver" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDynamicsCompressor Mozilla AudioContext.createDynamicsCompressor documentation> 
createDynamicsCompressor ::
                         (MonadDOM m, IsAudioContext self) =>
                           self -> m DynamicsCompressorNode
createDynamicsCompressor :: self -> m DynamicsCompressorNode
createDynamicsCompressor self
self
  = DOM DynamicsCompressorNode -> m DynamicsCompressorNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createDynamicsCompressor" ()) JSM JSVal
-> (JSVal -> DOM DynamicsCompressorNode)
-> DOM DynamicsCompressorNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM DynamicsCompressorNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDynamicsCompressor Mozilla AudioContext.createDynamicsCompressor documentation> 
createDynamicsCompressor_ ::
                          (MonadDOM m, IsAudioContext self) => self -> m ()
createDynamicsCompressor_ :: self -> m ()
createDynamicsCompressor_ self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createDynamicsCompressor" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createAnalyser Mozilla AudioContext.createAnalyser documentation> 
createAnalyser ::
               (MonadDOM m, IsAudioContext self) => self -> m AnalyserNode
createAnalyser :: self -> m AnalyserNode
createAnalyser self
self
  = DOM AnalyserNode -> m AnalyserNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createAnalyser" ()) JSM JSVal -> (JSVal -> DOM AnalyserNode) -> DOM AnalyserNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM AnalyserNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createAnalyser Mozilla AudioContext.createAnalyser documentation> 
createAnalyser_ ::
                (MonadDOM m, IsAudioContext self) => self -> m ()
createAnalyser_ :: self -> m ()
createAnalyser_ self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createAnalyser" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createScriptProcessor Mozilla AudioContext.createScriptProcessor documentation> 
createScriptProcessor ::
                      (MonadDOM m, IsAudioContext self) =>
                        self -> Word -> Maybe Word -> Maybe Word -> m ScriptProcessorNode
createScriptProcessor :: self -> Word -> Maybe Word -> Maybe Word -> m ScriptProcessorNode
createScriptProcessor self
self Word
bufferSize Maybe Word
numberOfInputChannels
  Maybe Word
numberOfOutputChannels
  = DOM ScriptProcessorNode -> m ScriptProcessorNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createScriptProcessor"
          [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
bufferSize, Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
numberOfInputChannels,
           Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
numberOfOutputChannels])
         JSM JSVal
-> (JSVal -> DOM ScriptProcessorNode) -> DOM ScriptProcessorNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM ScriptProcessorNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createScriptProcessor Mozilla AudioContext.createScriptProcessor documentation> 
createScriptProcessor_ ::
                       (MonadDOM m, IsAudioContext self) =>
                         self -> Word -> Maybe Word -> Maybe Word -> m ()
createScriptProcessor_ :: self -> Word -> Maybe Word -> Maybe Word -> m ()
createScriptProcessor_ self
self Word
bufferSize Maybe Word
numberOfInputChannels
  Maybe Word
numberOfOutputChannels
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createScriptProcessor"
            [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
bufferSize, Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
numberOfInputChannels,
             Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
numberOfOutputChannels]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createOscillator Mozilla AudioContext.createOscillator documentation> 
createOscillator ::
                 (MonadDOM m, IsAudioContext self) => self -> m OscillatorNode
createOscillator :: self -> m OscillatorNode
createOscillator self
self
  = DOM OscillatorNode -> m OscillatorNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createOscillator" ()) JSM JSVal -> (JSVal -> DOM OscillatorNode) -> DOM OscillatorNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM OscillatorNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createOscillator Mozilla AudioContext.createOscillator documentation> 
createOscillator_ ::
                  (MonadDOM m, IsAudioContext self) => self -> m ()
createOscillator_ :: self -> m ()
createOscillator_ self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createOscillator" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPeriodicWave Mozilla AudioContext.createPeriodicWave documentation> 
createPeriodicWave ::
                   (MonadDOM m, IsAudioContext self, IsFloat32Array real,
                    IsFloat32Array imag) =>
                     self -> real -> imag -> m PeriodicWave
createPeriodicWave :: self -> real -> imag -> m PeriodicWave
createPeriodicWave self
self real
real imag
imag
  = DOM PeriodicWave -> m PeriodicWave
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createPeriodicWave"
          [real -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal real
real, imag -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal imag
imag])
         JSM JSVal -> (JSVal -> DOM PeriodicWave) -> DOM PeriodicWave
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM PeriodicWave
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPeriodicWave Mozilla AudioContext.createPeriodicWave documentation> 
createPeriodicWave_ ::
                    (MonadDOM m, IsAudioContext self, IsFloat32Array real,
                     IsFloat32Array imag) =>
                      self -> real -> imag -> m ()
createPeriodicWave_ :: self -> real -> imag -> m ()
createPeriodicWave_ self
self real
real imag
imag
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createPeriodicWave"
            [real -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal real
real, imag -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal imag
imag]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelSplitter Mozilla AudioContext.createChannelSplitter documentation> 
createChannelSplitter ::
                      (MonadDOM m, IsAudioContext self) =>
                        self -> Maybe Word -> m ChannelSplitterNode
createChannelSplitter :: self -> Maybe Word -> m ChannelSplitterNode
createChannelSplitter self
self Maybe Word
numberOfOutputs
  = DOM ChannelSplitterNode -> m ChannelSplitterNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createChannelSplitter"
          [Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
numberOfOutputs])
         JSM JSVal
-> (JSVal -> DOM ChannelSplitterNode) -> DOM ChannelSplitterNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM ChannelSplitterNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelSplitter Mozilla AudioContext.createChannelSplitter documentation> 
createChannelSplitter_ ::
                       (MonadDOM m, IsAudioContext self) => self -> Maybe Word -> m ()
createChannelSplitter_ :: self -> Maybe Word -> m ()
createChannelSplitter_ self
self Maybe Word
numberOfOutputs
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createChannelSplitter"
            [Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
numberOfOutputs]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelMerger Mozilla AudioContext.createChannelMerger documentation> 
createChannelMerger ::
                    (MonadDOM m, IsAudioContext self) =>
                      self -> Maybe Word -> m ChannelMergerNode
createChannelMerger :: self -> Maybe Word -> m ChannelMergerNode
createChannelMerger self
self Maybe Word
numberOfInputs
  = DOM ChannelMergerNode -> m ChannelMergerNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createChannelMerger"
          [Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
numberOfInputs])
         JSM JSVal
-> (JSVal -> DOM ChannelMergerNode) -> DOM ChannelMergerNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM ChannelMergerNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelMerger Mozilla AudioContext.createChannelMerger documentation> 
createChannelMerger_ ::
                     (MonadDOM m, IsAudioContext self) => self -> Maybe Word -> m ()
createChannelMerger_ :: self -> Maybe Word -> m ()
createChannelMerger_ self
self Maybe Word
numberOfInputs
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"createChannelMerger"
            [Maybe Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe Word
numberOfInputs]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.startRendering Mozilla AudioContext.startRendering documentation> 
startRendering :: (MonadDOM m, IsAudioContext self) => self -> m ()
startRendering :: self -> m ()
startRendering self
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"startRendering" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.destination Mozilla AudioContext.destination documentation> 
getDestination ::
               (MonadDOM m, IsAudioContext self) => self -> m AudioDestinationNode
getDestination :: self -> m AudioDestinationNode
getDestination self
self
  = DOM AudioDestinationNode -> m AudioDestinationNode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter AudioContext (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"destination") JSM JSVal
-> (JSVal -> DOM AudioDestinationNode) -> DOM AudioDestinationNode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         JSVal -> DOM AudioDestinationNode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.currentTime Mozilla AudioContext.currentTime documentation> 
getCurrentTime ::
               (MonadDOM m, IsAudioContext self) => self -> m Double
getCurrentTime :: self -> m Double
getCurrentTime self
self
  = DOM Double -> m Double
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter AudioContext (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"currentTime") JSM JSVal -> (JSVal -> DOM Double) -> DOM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Double
forall value. ToJSVal value => value -> DOM Double
valToNumber)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.sampleRate Mozilla AudioContext.sampleRate documentation> 
getSampleRate ::
              (MonadDOM m, IsAudioContext self) => self -> m Float
getSampleRate :: self -> m Float
getSampleRate self
self
  = DOM Float -> m Float
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Float
forall a b. (Real a, Fractional b) => a -> b
realToFrac (Double -> Float) -> DOM Double -> DOM Float
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter AudioContext (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"sampleRate") JSM JSVal -> (JSVal -> DOM Double) -> DOM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM Double
forall value. ToJSVal value => value -> DOM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.listener Mozilla AudioContext.listener documentation> 
getListener ::
            (MonadDOM m, IsAudioContext self) => self -> m AudioListener
getListener :: self -> m AudioListener
getListener self
self
  = DOM AudioListener -> m AudioListener
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter AudioContext (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"listener") JSM JSVal -> (JSVal -> DOM AudioListener) -> DOM AudioListener
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM AudioListener
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.state Mozilla AudioContext.state documentation> 
getState ::
         (MonadDOM m, IsAudioContext self) => self -> m AudioContextState
getState :: self -> m AudioContextState
getState self
self
  = DOM AudioContextState -> m AudioContextState
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter AudioContext (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"state") JSM JSVal
-> (JSVal -> DOM AudioContextState) -> DOM AudioContextState
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM AudioContextState
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.onstatechange Mozilla AudioContext.onstatechange documentation> 
statechange ::
            (IsAudioContext self, IsEventTarget self) =>
              EventName self onstatechange
statechange :: EventName self onstatechange
statechange = DOMString -> EventName self onstatechange
forall t e. DOMString -> EventName t e
unsafeEventName ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"statechange")

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.activeSourceCount Mozilla AudioContext.activeSourceCount documentation> 
getActiveSourceCount ::
                     (MonadDOM m, IsAudioContext self) => self -> m Word
getActiveSourceCount :: self -> m Word
getActiveSourceCount self
self
  = DOM Word -> m Word
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (Double -> Word
forall a b. (RealFrac a, Integral b) => a -> b
round (Double -> Word) -> DOM Double -> DOM Word
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         (((self -> AudioContext
forall o. IsAudioContext o => o -> AudioContext
toAudioContext self
self) AudioContext
-> Getting (JSM JSVal) AudioContext (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter AudioContext (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"activeSourceCount") JSM JSVal -> (JSVal -> DOM Double) -> DOM Double
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
            JSVal -> DOM Double
forall value. ToJSVal value => value -> DOM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.oncomplete Mozilla AudioContext.oncomplete documentation> 
complete ::
         (IsAudioContext self, IsEventTarget self) =>
           EventName self OfflineAudioCompletionEvent
complete :: EventName self OfflineAudioCompletionEvent
complete = DOMString -> EventName self OfflineAudioCompletionEvent
forall t e. DOMString -> EventName t e
unsafeEventName ([Char] -> DOMString
forall a. ToJSString a => a -> DOMString
toJSString [Char]
"complete")