{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.AudioParam
       (setValueAtTime, linearRampToValueAtTime,
        exponentialRampToValueAtTime, setTargetAtTime, setValueCurveAtTime,
        cancelScheduledValues, setValue, getValue, getMinValue,
        getMaxValue, getDefaultValue, getName, getUnits, AudioParam(..),
        gTypeAudioParam)
       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/AudioParam.setValueAtTime Mozilla AudioParam.setValueAtTime documentation> 
setValueAtTime ::
               (MonadDOM m) => AudioParam -> Float -> Float -> m ()
setValueAtTime :: forall (m :: * -> *).
MonadDOM m =>
AudioParam -> Float -> Float -> m ()
setValueAtTime AudioParam
self Float
value Float
time
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (AudioParam
self AudioParam
-> Getting (JSM JSVal) AudioParam (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
"setValueAtTime" [Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
value, Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
time]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.linearRampToValueAtTime Mozilla AudioParam.linearRampToValueAtTime documentation> 
linearRampToValueAtTime ::
                        (MonadDOM m) => AudioParam -> Float -> Float -> m ()
linearRampToValueAtTime :: forall (m :: * -> *).
MonadDOM m =>
AudioParam -> Float -> Float -> m ()
linearRampToValueAtTime AudioParam
self Float
value Float
time
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (AudioParam
self AudioParam
-> Getting (JSM JSVal) AudioParam (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
"linearRampToValueAtTime"
            [Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
value, Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
time]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.exponentialRampToValueAtTime Mozilla AudioParam.exponentialRampToValueAtTime documentation> 
exponentialRampToValueAtTime ::
                             (MonadDOM m) => AudioParam -> Float -> Float -> m ()
exponentialRampToValueAtTime :: forall (m :: * -> *).
MonadDOM m =>
AudioParam -> Float -> Float -> m ()
exponentialRampToValueAtTime AudioParam
self Float
value Float
time
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (AudioParam
self AudioParam
-> Getting (JSM JSVal) AudioParam (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
"exponentialRampToValueAtTime"
            [Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
value, Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
time]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setTargetAtTime Mozilla AudioParam.setTargetAtTime documentation> 
setTargetAtTime ::
                (MonadDOM m) => AudioParam -> Float -> Float -> Float -> m ()
setTargetAtTime :: forall (m :: * -> *).
MonadDOM m =>
AudioParam -> Float -> Float -> Float -> m ()
setTargetAtTime AudioParam
self Float
target Float
time Float
timeConstant
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (AudioParam
self AudioParam
-> Getting (JSM JSVal) AudioParam (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
"setTargetAtTime"
            [Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
target, Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
time, Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
timeConstant]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setValueCurveAtTime Mozilla AudioParam.setValueCurveAtTime documentation> 
setValueCurveAtTime ::
                    (MonadDOM m, IsFloat32Array values) =>
                      AudioParam -> Maybe values -> Float -> Float -> m ()
setValueCurveAtTime :: forall (m :: * -> *) values.
(MonadDOM m, IsFloat32Array values) =>
AudioParam -> Maybe values -> Float -> Float -> m ()
setValueCurveAtTime AudioParam
self Maybe values
values Float
time Float
duration
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (AudioParam
self AudioParam
-> Getting (JSM JSVal) AudioParam (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
"setValueCurveAtTime"
            [Maybe values -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe values
values, Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
time, Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
duration]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.cancelScheduledValues Mozilla AudioParam.cancelScheduledValues documentation> 
cancelScheduledValues ::
                      (MonadDOM m) => AudioParam -> Float -> m ()
cancelScheduledValues :: forall (m :: * -> *). MonadDOM m => AudioParam -> Float -> m ()
cancelScheduledValues AudioParam
self Float
startTime
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (AudioParam
self AudioParam
-> Getting (JSM JSVal) AudioParam (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
"cancelScheduledValues" [Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
startTime]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.value Mozilla AudioParam.value documentation> 
setValue :: (MonadDOM m) => AudioParam -> Float -> m ()
setValue :: forall (m :: * -> *). MonadDOM m => AudioParam -> Float -> m ()
setValue AudioParam
self Float
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (AudioParam
self AudioParam -> Getting (DOM ()) AudioParam (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
"value" (Float -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Float
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.value Mozilla AudioParam.value documentation> 
getValue :: (MonadDOM m) => AudioParam -> m Float
getValue :: forall (m :: * -> *). MonadDOM m => AudioParam -> m Float
getValue AudioParam
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) -> JSM Double -> DOM Float
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((AudioParam
self AudioParam
-> Getting (JSM JSVal) AudioParam (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter AudioParam (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"value") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.minValue Mozilla AudioParam.minValue documentation> 
getMinValue :: (MonadDOM m) => AudioParam -> m Float
getMinValue :: forall (m :: * -> *). MonadDOM m => AudioParam -> m Float
getMinValue AudioParam
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) -> JSM Double -> DOM Float
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((AudioParam
self AudioParam
-> Getting (JSM JSVal) AudioParam (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter AudioParam (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"minValue") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.maxValue Mozilla AudioParam.maxValue documentation> 
getMaxValue :: (MonadDOM m) => AudioParam -> m Float
getMaxValue :: forall (m :: * -> *). MonadDOM m => AudioParam -> m Float
getMaxValue AudioParam
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) -> JSM Double -> DOM Float
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((AudioParam
self AudioParam
-> Getting (JSM JSVal) AudioParam (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter AudioParam (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"maxValue") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.defaultValue Mozilla AudioParam.defaultValue documentation> 
getDefaultValue :: (MonadDOM m) => AudioParam -> m Float
getDefaultValue :: forall (m :: * -> *). MonadDOM m => AudioParam -> m Float
getDefaultValue AudioParam
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) -> JSM Double -> DOM Float
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((AudioParam
self AudioParam
-> Getting (JSM JSVal) AudioParam (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter AudioParam (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"defaultValue") JSM JSVal -> (JSVal -> JSM Double) -> JSM Double
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM Double
forall value. ToJSVal value => value -> JSM Double
valToNumber))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.name Mozilla AudioParam.name documentation> 
getName ::
        (MonadDOM m, FromJSString result) => AudioParam -> m result
getName :: forall (m :: * -> *) result.
(MonadDOM m, FromJSString result) =>
AudioParam -> m result
getName AudioParam
self = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((AudioParam
self AudioParam
-> Getting (JSM JSVal) AudioParam (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter AudioParam (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"name") JSM JSVal -> (JSVal -> DOM result) -> DOM result
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 result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

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