{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.BiquadFilterNode
       (getFrequencyResponse, setType, getType, getFrequency, getDetune,
        getQ, getGain, BiquadFilterNode(..), gTypeBiquadFilterNode)
       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/BiquadFilterNode.getFrequencyResponse Mozilla BiquadFilterNode.getFrequencyResponse documentation> 
getFrequencyResponse ::
                     (MonadDOM m, IsFloat32Array frequencyHz,
                      IsFloat32Array magResponse, IsFloat32Array phaseResponse) =>
                       BiquadFilterNode ->
                         Maybe frequencyHz ->
                           Maybe magResponse -> Maybe phaseResponse -> m ()
getFrequencyResponse :: forall (m :: * -> *) frequencyHz magResponse phaseResponse.
(MonadDOM m, IsFloat32Array frequencyHz,
 IsFloat32Array magResponse, IsFloat32Array phaseResponse) =>
BiquadFilterNode
-> Maybe frequencyHz
-> Maybe magResponse
-> Maybe phaseResponse
-> m ()
getFrequencyResponse BiquadFilterNode
self Maybe frequencyHz
frequencyHz Maybe magResponse
magResponse Maybe phaseResponse
phaseResponse
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (BiquadFilterNode
self BiquadFilterNode
-> Getting (JSM JSVal) BiquadFilterNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"getFrequencyResponse"
            [Maybe frequencyHz -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe frequencyHz
frequencyHz, Maybe magResponse -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe magResponse
magResponse, Maybe phaseResponse -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe phaseResponse
phaseResponse]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.type Mozilla BiquadFilterNode.type documentation> 
setType ::
        (MonadDOM m) => BiquadFilterNode -> BiquadFilterType -> m ()
setType :: forall (m :: * -> *).
MonadDOM m =>
BiquadFilterNode -> BiquadFilterType -> m ()
setType BiquadFilterNode
self BiquadFilterType
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (BiquadFilterNode
self BiquadFilterNode
-> Getting (DOM ()) BiquadFilterNode (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. String
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss String
"type" (BiquadFilterType -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal BiquadFilterType
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.type Mozilla BiquadFilterNode.type documentation> 
getType :: (MonadDOM m) => BiquadFilterNode -> m BiquadFilterType
getType :: forall (m :: * -> *).
MonadDOM m =>
BiquadFilterNode -> m BiquadFilterType
getType BiquadFilterNode
self = DOM BiquadFilterType -> m BiquadFilterType
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((BiquadFilterNode
self BiquadFilterNode
-> Getting (JSM JSVal) BiquadFilterNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter BiquadFilterNode (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"type") JSM JSVal
-> (JSVal -> DOM BiquadFilterType) -> DOM BiquadFilterType
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM BiquadFilterType
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.frequency Mozilla BiquadFilterNode.frequency documentation> 
getFrequency :: (MonadDOM m) => BiquadFilterNode -> m AudioParam
getFrequency :: forall (m :: * -> *).
MonadDOM m =>
BiquadFilterNode -> m AudioParam
getFrequency BiquadFilterNode
self
  = DOM AudioParam -> m AudioParam
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((BiquadFilterNode
self BiquadFilterNode
-> Getting (JSM JSVal) BiquadFilterNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter BiquadFilterNode (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"frequency") JSM JSVal -> (JSVal -> DOM AudioParam) -> DOM AudioParam
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM AudioParam
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.detune Mozilla BiquadFilterNode.detune documentation> 
getDetune :: (MonadDOM m) => BiquadFilterNode -> m AudioParam
getDetune :: forall (m :: * -> *).
MonadDOM m =>
BiquadFilterNode -> m AudioParam
getDetune BiquadFilterNode
self
  = DOM AudioParam -> m AudioParam
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((BiquadFilterNode
self BiquadFilterNode
-> Getting (JSM JSVal) BiquadFilterNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter BiquadFilterNode (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"detune") JSM JSVal -> (JSVal -> DOM AudioParam) -> DOM AudioParam
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM AudioParam
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.Q Mozilla BiquadFilterNode.Q documentation> 
getQ :: (MonadDOM m) => BiquadFilterNode -> m AudioParam
getQ :: forall (m :: * -> *).
MonadDOM m =>
BiquadFilterNode -> m AudioParam
getQ BiquadFilterNode
self = DOM AudioParam -> m AudioParam
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((BiquadFilterNode
self BiquadFilterNode
-> Getting (JSM JSVal) BiquadFilterNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter BiquadFilterNode (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"Q") JSM JSVal -> (JSVal -> DOM AudioParam) -> DOM AudioParam
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM AudioParam
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.gain Mozilla BiquadFilterNode.gain documentation> 
getGain :: (MonadDOM m) => BiquadFilterNode -> m AudioParam
getGain :: forall (m :: * -> *).
MonadDOM m =>
BiquadFilterNode -> m AudioParam
getGain BiquadFilterNode
self = DOM AudioParam -> m AudioParam
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((BiquadFilterNode
self BiquadFilterNode
-> Getting (JSM JSVal) BiquadFilterNode (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter BiquadFilterNode (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"gain") JSM JSVal -> (JSVal -> DOM AudioParam) -> DOM AudioParam
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM AudioParam
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)