jsaddle-dom-0.10.0.0: src/JSDOM/Generated/AudioBufferSourceNode.hs
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
module JSDOM.Generated.AudioBufferSourceNode
(newAudioBufferSourceNode, start, setBuffer, getBuffer, getBufferUnsafe, getBufferUnchecked, getPlaybackRate, getDetune, setLoop, getLoop, setLoopStart, getLoopStart, setLoopEnd, getLoopEnd, AudioBufferSourceNode(..), gTypeAudioBufferSourceNode)
where
import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
import qualified Prelude as P
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
import JSDOM.Types
import qualified JSDOM.Types as Types
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Generated.Enums
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/AudioBufferSourceNode MDN AudioBufferSourceNode. documentation>
newAudioBufferSourceNode :: (MonadDOM m, IsBaseAudioContext context) => context -> Maybe AudioBufferSourceOptions -> m AudioBufferSourceNode
newAudioBufferSourceNode context options = liftDOM (((new (jsg "AudioBufferSourceNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/start MDN AudioBufferSourceNode.start documentation>
start :: (MonadDOM m) => AudioBufferSourceNode -> Maybe Double -> Maybe Double -> Maybe Double -> m ()
start self when offset duration = liftDOM (void (self ^. jsf "start" [P.maybe (P.return jsUndefined) toJSVal when, P.maybe (P.return jsUndefined) toJSVal offset, P.maybe (P.return jsUndefined) toJSVal duration]))
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/buffer MDN AudioBufferSourceNode.buffer documentation>
setBuffer :: (MonadDOM m) => AudioBufferSourceNode -> Maybe AudioBuffer -> m ()
setBuffer self val = liftDOM (void (self ^. jss "buffer" (toJSVal val)))
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/buffer MDN AudioBufferSourceNode.buffer documentation>
getBuffer :: (MonadDOM m) => AudioBufferSourceNode -> m (Maybe AudioBuffer)
getBuffer self = liftDOM (((self ^. js "buffer") >>= fromJSValUnchecked))
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/buffer MDN AudioBufferSourceNode.buffer documentation>
getBufferUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceNode -> m AudioBuffer
getBufferUnsafe self = liftDOM ((((self ^. js "buffer") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/buffer MDN AudioBufferSourceNode.buffer documentation>
getBufferUnchecked :: (MonadDOM m) => AudioBufferSourceNode -> m AudioBuffer
getBufferUnchecked self = liftDOM (((self ^. js "buffer") >>= fromJSValUnchecked))
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/playbackRate MDN AudioBufferSourceNode.playbackRate documentation>
getPlaybackRate :: (MonadDOM m) => AudioBufferSourceNode -> m AudioParam
getPlaybackRate self = liftDOM (((self ^. js "playbackRate") >>= fromJSValUnchecked))
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/detune MDN AudioBufferSourceNode.detune documentation>
getDetune :: (MonadDOM m) => AudioBufferSourceNode -> m AudioParam
getDetune self = liftDOM (((self ^. js "detune") >>= fromJSValUnchecked))
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loop MDN AudioBufferSourceNode.loop documentation>
setLoop :: (MonadDOM m) => AudioBufferSourceNode -> Bool -> m ()
setLoop self val = liftDOM (void (self ^. jss "loop" (toJSVal val)))
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loop MDN AudioBufferSourceNode.loop documentation>
getLoop :: (MonadDOM m) => AudioBufferSourceNode -> m Bool
getLoop self = liftDOM (((self ^. js "loop") >>= valToBool))
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopStart MDN AudioBufferSourceNode.loopStart documentation>
setLoopStart :: (MonadDOM m) => AudioBufferSourceNode -> Double -> m ()
setLoopStart self val = liftDOM (void (self ^. jss "loopStart" (toJSVal val)))
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopStart MDN AudioBufferSourceNode.loopStart documentation>
getLoopStart :: (MonadDOM m) => AudioBufferSourceNode -> m Double
getLoopStart self = liftDOM (((self ^. js "loopStart") >>= valToNumber))
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopEnd MDN AudioBufferSourceNode.loopEnd documentation>
setLoopEnd :: (MonadDOM m) => AudioBufferSourceNode -> Double -> m ()
setLoopEnd self val = liftDOM (void (self ^. jss "loopEnd" (toJSVal val)))
-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopEnd MDN AudioBufferSourceNode.loopEnd documentation>
getLoopEnd :: (MonadDOM m) => AudioBufferSourceNode -> m Double
getLoopEnd self = liftDOM (((self ^. js "loopEnd") >>= valToNumber))