packages feed

jsaddle-dom-0.10.0.0: src/JSDOM/Generated/AudioBuffer.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.AudioBuffer
       (newAudioBuffer, copyFromChannel, copyToChannel, getChannelData, getChannelData_, getSampleRate, getLength, getDuration, getNumberOfChannels, AudioBuffer(..), gTypeAudioBuffer)
       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/AudioBuffer/AudioBuffer MDN AudioBuffer. documentation>
newAudioBuffer :: (MonadDOM m) => AudioBufferOptions -> m AudioBuffer
newAudioBuffer options = liftDOM (((new (jsg "AudioBuffer") [toJSVal options]) >>= fromJSValUnchecked))

-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/copyFromChannel MDN AudioBuffer.copyFromChannel documentation>
copyFromChannel :: (MonadDOM m, IsFloat32Array destination) => AudioBuffer -> destination -> Word -> Maybe Word -> m ()
copyFromChannel self destination channelNumber bufferOffset = liftDOM (void (self ^. jsf "copyFromChannel" [toJSVal destination, toJSVal channelNumber, P.maybe (P.return jsUndefined) toJSVal bufferOffset]))

-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/copyToChannel MDN AudioBuffer.copyToChannel documentation>
copyToChannel :: (MonadDOM m, IsFloat32Array source) => AudioBuffer -> source -> Word -> Maybe Word -> m ()
copyToChannel self source channelNumber bufferOffset = liftDOM (void (self ^. jsf "copyToChannel" [toJSVal source, toJSVal channelNumber, P.maybe (P.return jsUndefined) toJSVal bufferOffset]))

-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/getChannelData MDN AudioBuffer.getChannelData documentation>
getChannelData :: (MonadDOM m) => AudioBuffer -> Word -> m Float32Array
getChannelData self channel = liftDOM (((self ^. jsf "getChannelData" [toJSVal channel]) >>= fromJSValUnchecked))

-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/getChannelData MDN AudioBuffer.getChannelData documentation>
getChannelData_ :: (MonadDOM m) => AudioBuffer -> Word -> m ()
getChannelData_ self channel = liftDOM (void (self ^. jsf "getChannelData" [toJSVal channel]))

-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/sampleRate MDN AudioBuffer.sampleRate documentation>
getSampleRate :: (MonadDOM m) => AudioBuffer -> m Float
getSampleRate self = liftDOM ((P.realToFrac <$> ((self ^. js "sampleRate") >>= valToNumber)))

-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/length MDN AudioBuffer.length documentation>
getLength :: (MonadDOM m) => AudioBuffer -> m Word
getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))

-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/duration MDN AudioBuffer.duration documentation>
getDuration :: (MonadDOM m) => AudioBuffer -> m Double
getDuration self = liftDOM (((self ^. js "duration") >>= valToNumber))

-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/numberOfChannels MDN AudioBuffer.numberOfChannels documentation>
getNumberOfChannels :: (MonadDOM m) => AudioBuffer -> m Word
getNumberOfChannels self = liftDOM ((P.round <$> ((self ^. js "numberOfChannels") >>= valToNumber)))