{-# LANGUAGE PatternSynonyms #-} -- For HasCallStack compatibility {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} module JSDOM.Generated.OscillatorNode (start, stop, noteOn, noteOff, setPeriodicWave, pattern SINE, pattern SQUARE, pattern SAWTOOTH, pattern TRIANGLE, pattern CUSTOM, pattern UNSCHEDULED_STATE, pattern SCHEDULED_STATE, pattern PLAYING_STATE, pattern FINISHED_STATE, setType, getType, getPlaybackState, getFrequency, getFrequencyUnsafe, getFrequencyUnchecked, getDetune, getDetuneUnsafe, getDetuneUnchecked, ended, OscillatorNode(..), gTypeOscillatorNode) 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 Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, new, array) 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) import JSDOM.Enums -- | start :: (MonadDOM m) => OscillatorNode -> Double -> m () start self when = liftDOM (void (self ^. jsf "start" [toJSVal when])) -- | stop :: (MonadDOM m) => OscillatorNode -> Double -> m () stop self when = liftDOM (void (self ^. jsf "stop" [toJSVal when])) -- | noteOn :: (MonadDOM m) => OscillatorNode -> Double -> m () noteOn self when = liftDOM (void (self ^. jsf "noteOn" [toJSVal when])) -- | noteOff :: (MonadDOM m) => OscillatorNode -> Double -> m () noteOff self when = liftDOM (void (self ^. jsf "noteOff" [toJSVal when])) -- | setPeriodicWave :: (MonadDOM m) => OscillatorNode -> Maybe PeriodicWave -> m () setPeriodicWave self wave = liftDOM (void (self ^. jsf "setPeriodicWave" [toJSVal wave])) pattern SINE = 0 pattern SQUARE = 1 pattern SAWTOOTH = 2 pattern TRIANGLE = 3 pattern CUSTOM = 4 pattern UNSCHEDULED_STATE = 0 pattern SCHEDULED_STATE = 1 pattern PLAYING_STATE = 2 pattern FINISHED_STATE = 3 -- | setType :: (MonadDOM m, ToJSString val) => OscillatorNode -> val -> m () setType self val = liftDOM (self ^. jss "type" (toJSVal val)) -- | getType :: (MonadDOM m, FromJSString result) => OscillatorNode -> m result getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked) -- | getPlaybackState :: (MonadDOM m) => OscillatorNode -> m Word getPlaybackState self = liftDOM (round <$> ((self ^. js "playbackState") >>= valToNumber)) -- | getFrequency :: (MonadDOM m) => OscillatorNode -> m (Maybe AudioParam) getFrequency self = liftDOM ((self ^. js "frequency") >>= fromJSVal) -- | getFrequencyUnsafe :: (MonadDOM m, HasCallStack) => OscillatorNode -> m AudioParam getFrequencyUnsafe self = liftDOM (((self ^. js "frequency") >>= fromJSVal) >>= maybe (Prelude.error "Nothing to return") return) -- | getFrequencyUnchecked :: (MonadDOM m) => OscillatorNode -> m AudioParam getFrequencyUnchecked self = liftDOM ((self ^. js "frequency") >>= fromJSValUnchecked) -- | getDetune :: (MonadDOM m) => OscillatorNode -> m (Maybe AudioParam) getDetune self = liftDOM ((self ^. js "detune") >>= fromJSVal) -- | getDetuneUnsafe :: (MonadDOM m, HasCallStack) => OscillatorNode -> m AudioParam getDetuneUnsafe self = liftDOM (((self ^. js "detune") >>= fromJSVal) >>= maybe (Prelude.error "Nothing to return") return) -- | getDetuneUnchecked :: (MonadDOM m) => OscillatorNode -> m AudioParam getDetuneUnchecked self = liftDOM ((self ^. js "detune") >>= fromJSValUnchecked) -- | ended :: EventName OscillatorNode Event ended = unsafeEventName (toJSString "ended")